Répondre à la discussion

Je  ne suis pas du tout un utilisateur de macro aussi ais-je peut-être mal appliqué ton code, mais voici le résultat obtenu


J'ai cliqué sur Outil>Macro>visualBasicEditor

puis là, ma feuille était déjà sélectionnée.

j'ai double-cliqué et il m'a ouvert une fenêtre. J'ai collé ton code puis suis allé sur affichage>microsoftExcel


là j'ai commencé ) mettre un "/" dans B1 comme séparateur (car mon fichier d'origine contient un espace, pas très visuel comme résultat pour des tests). Puis je suis allé modifier les données C2 D2 E2 etc et d'un coup il m'affiche


et me dit qu'il manque de mémoire


Ah bon ?


Je clique débogage et là j'ai ça


Et si je vais sur la feuille, je vois ça :


apparemment il colle des résultats dans B1, et si je regarde de plus près, je vois qu'il les colle à l'infini.


Qu'est-ce qui a loupé ?


EDIT : je viens de refaire un essai.

Tant que je ne touche pas à B1, ça fonctionne plutôt bien.

Peut-être faudrait-il que je place mon séparateur ailleurs qu'en B1 ? Sinon ça fait un effet loop je pense.


RE-EDIT : non, en fait le problème se produit quel que soit la cellule que je touche dans la ligne 1.

Mais effectivement, je pense que le B1 n'est pas un bon choix de cellule pour contenir le séparateur.

Faudrait que je le place ailleurs pour éviter l'effet loop.


C'est dans quel endroit de ton code qu'on spécifie l'emplacement de cette cellule ?


RE RE EDIT :


OK, j'ai trouvé, voilà le code modifié : [code]Private Sub Worksheet_Change(ByVal Target As Range)

MaLigne = Target.Row

Dim MaChaine As String

MaChaine = ""

For i = 3 To 78

    If ActiveSheet.Cells(MaLigne, i).Value <> "" Then

        MaChaine = MaChaine + ActiveSheet.Cells(1, i).Value + ActiveSheet.Cells(1, 1).Value

    End If

Next i

    Range("B" & MaLigne).Value = Left(MaChaine, Len(MaChaine) - Len(ActiveSheet.Cells(1, 1).Value))

    Exit Sub

End Sub[/code]


j'ai juste changé 1,2 par 1,1 et ça roule, ma cellule de séparateur est en A1.


RE RE RE EDIT


Par contre ça n'est pas rétroactif si je modifie le séparateur ou l'un des noms de la ligne 1 (ou tout du moins ça ne modifie que la ligne 1, ce qui n'a pas d'intérêt). Dommage&#8230;

Et ça prend un peu de temps à chaque fois, on dirait qu'il a un peu de mal.


N'y aurait-il pas moyen de lui demander d'appliquer la Macro que à la fin du remplissage du tableau (et à l'ensemble du tableau), pour éviter tout ce temps à attendre ?