Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

concaténation VBA

  • Initiateur de la discussion Initiateur de la discussion Murdoc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Murdoc

Guest
Bonjour à tous,

Essayant toujours de me familiariser avec l'outil VBA j'ai souhaité réaliser une macro de concaténation, qui ne fonctionne pas du tout, voir code ci-dessous:

Sub Concatener()


Dim Cell As Range, Sh2 As Worksheet, Identite As Range

Set Sh2 = Sheets("Feuil2")

For Each Cell In Sh2.Range("D1😀" & Sh2.Range("D65536").End(xIup).Row)

Set Identite = Cells("A1") & ("B1") & ("C1")

Next

End Sub



Pour une personne qui si connait sa doit sûrment paraître farfellu , mais en ce qui me concernen je ne comprends mon erreur. En plus j'ai le droit a une erreure 1004, et sa ne me parle pas du tout.

Quelqu'un peut-il m'aider?? à rendre ma macro utilisable mais aussi à comprendre l'erreur.

Merci d'avance pour votre aide.
 
Re : concaténation VBA

Bonjour Murdock,

D'abord, Cell est un nom réservé, je crois, donc j'appelerais ma varaible Cellule ou un truc comme ça. En tout cas comme la collection Cells existe j'évite Cell comme nom de variable.

ensuite où se trouve ta plage Identité ? où veux-tu écrire A1&B1&C1 ?
si c'est en D1 (puis D2, D3...) alors c'est dans Cellule (Cell) qu'il faut écrire

donc je remplacerais :

Code:
Set Identite = Cells("A1") & ("B1") & ("C1")

par

Code:
Cellule.value = Sh2.cells(Cellule.row,1).value & Sh2.cells(Cellule.row,2).value & Sh2.cells(Cellule.row,3).value
 
Re : concaténation VBA

Bonjour Tototiti et merci pour ta réponse,

Donc si j'ai bien compris voilà ce que sa donne avec les bonnes modifs.

Sub Concatener()


Dim Cellule As Range, Sh2 As Worksheet

Set Sh2 = Sheets("Feuil2")

For Each Cellule In Sh2.Range("D1😀" & Sh2.Range("D65536").End(xIup).Row)

Cellule.Value = Sh2.Cells(A1, 1).Value & Sh2.Cells(B1, 1).Value & Sh2.Cells(C1, 1).Value

Next

End Sub

Cependant une erreur 1004 apparaît toujours pour la ligne:
For Each Cellule In Sh2.Range("D1😀" & Sh2.Range("D65536").End(xIup).Row)


Que signifie cette erreur??

Merci d'avance
 
Re : concaténation VBA

Re,

alors voilà :

comme ta colonne D est vide
Sh2.Range("D65536").End(xlup).Row
vaut 1
donc il vaudrait mieux mettre
Sh2.Range("A65536").End(xlup).Row
par exemple

ensuite tu as fait une faute de frappe, tu as tapé XIUP à la place de XLUP, c'est pour ça que ça plantait


enfin tu devrais mettre

Cellule.value = Sh2.cells(Cellule.row,1).value & Sh2.cells(Cellule.row,2).value & Sh2.cells(Cellule.row,3).value

comme je te l'avais proposé plus haut.

Cells attend un numéro de ligne et un numéro de colonne, tu ne peux pas mettre A1, B1, C1 dedans.
Si tu préfères travailler en A, B, C, tu peux également faire

Cellule.value = Sh2.range("A" & Cellule.row).value & Sh2.range("B" & Cellule.row).value & Sh2.range("C" & Cellule.row).value
 
Re : concaténation VBA

ok sa fonctionne presque merci:

Je l'ai fait comme sa:

For Each Cellule In Sh2.Range("D1😀" & Sh2.Range("D65536").End(xlUp).Row)

Cellule.Value = Sh2.Range("A" & 1).Value & Sh2.Range("B" & 1).Value & Sh2.Range("C" & 1).Value

Mais celà n'opère que sur la première ligne alors que toutes les lignes avec de l'écriture devraient être concernées. ???
 
Re : concaténation VBA

Re,

voir plus haut :

comme ta colonne D est vide
Sh2.Range("D65536").End(xlup).Row
vaut 1
donc il vaudrait mieux mettre
Sh2.Range("A65536").End(xlup).Row
par exemple

remplace

Code:
For Each Cellule In Sh2.Range("D1:D" & Sh2.Range("D65536").End(xlUp).Row)

par

Code:
For Each Cellule In Sh2.Range("D1:D" & Sh2.Range("[COLOR=red]A[/COLOR]65536").End(xlUp).Row)
 
Re : concaténation VBA

Oui j'ai essayé mais de cette façon le résultat de la première ligne est recopié dans les suivantes , mais la concaténation n'opére pas ligne par ligne.
 
Re : concaténation VBA

Re,

en effet, il faut aussi remplacer :

Code:
Cellule.Value = Sh2.Range("A" & 1).Value & Sh2.Range("B" & 1).Value & Sh2.Range("C" & 1).Value

par

Code:
Cellule.value = Sh2.range("A" & Cellule.row).value & Sh2.range("B" & Cellule.row).value & Sh2.range("C" & Cellule.row).value
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
589
Réponses
17
Affichages
2 K
E
  • Question Question
Réponses
4
Affichages
3 K
M
Réponses
4
Affichages
975
mimich_88
M
A
Réponses
17
Affichages
4 K
Abdenour
A
Réponses
1
Affichages
949
Réponses
8
Affichages
1 K
O
  • Question Question
Réponses
0
Affichages
732
okotcha
O
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…