Concatener en VBA, syntaxe

Le
Pierre F.
Bonjour à toutes et tous!

Je cherche à concaténer en VBA une liste de mots présente sur la plage
D2:D29 et placer le résultats sur une autre feuille dans une cellule
précise (qui change en cours de macro).

J'ai écrit ceci:

Sheets("Feuil1)
liste = ""
For q = 2 To 29
liste = Cells[4,q] & ", "
Next q

m = m + 28

Sheets("Feuil2").Select
Cells(m, 2) = liste
-

Il ne fait pas la concaténation et annonce en plus une erreur sur la feuil2

Merci de me prêter quelques-uns de vos neurones :-)

Cordialement,
Pierre F.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #12854041
Bonjour.
Mets :
Sheets("Feuil1")
au lieu de :
Sheets("Feuil1)
et
liste = Cells[q,4] & ", "
au lieu de :
liste = Cells[4,q] & ", "
Par contre, tu ne devrais pas avoir d'erreur. Sur quelle ligne se produit
l'erreur et quel est le message ?
"Pierre F." c87a7$4873819e$55da2ea5$
Bonjour à toutes et tous!

Je cherche à concaténer en VBA une liste de mots présente sur la plage
D2:D29 et placer le résultats sur une autre feuille dans une cellule
précise (qui change en cours de macro).

J'ai écrit ceci:
------------------------
Sheets("Feuil1)
liste = ""
For q = 2 To 29
liste = Cells[4,q] & ", "
Next q

m = m + 28

Sheets("Feuil2").Select
Cells(m, 2) = liste
-------------------------

Il ne fait pas la concaténation et annonce en plus une erreur sur la
feuil2

Merci de me prêter quelques-uns de vos neurones :-)

Cordialement,
Pierre F.


Francis SLAWNY
Le #12854031
Y a quelques erreurs dans ta macro.
Essaie ça :

Sub essai()
Sheets("Feuil1").Select
liste = Cells(4, 2)
For q = 3 To 29
liste = liste & "," & Cells(4, q)
Next q
'm = m + 28

Sheets("Feuil2").Select
Cells(1, 2) = liste
End Sub

Et adapte à tes besions

FS


"Pierre F." c87a7$4873819e$55da2ea5$
Bonjour à toutes et tous!

Je cherche à concaténer en VBA une liste de mots présente sur la plage
D2:D29 et placer le résultats sur une autre feuille dans une cellule
précise (qui change en cours de macro).

J'ai écrit ceci:
------------------------
Sheets("Feuil1)
liste = ""
For q = 2 To 29
liste = Cells[4,q] & ", "
Next q

m = m + 28

Sheets("Feuil2").Select
Cells(m, 2) = liste
-------------------------

Il ne fait pas la concaténation et annonce en plus une erreur sur la
feuil2

Merci de me prêter quelques-uns de vos neurones :-)

Cordialement,
Pierre F.


Francis SLAWNY
Le #12854361
Je n'avais pas remarqué mais si tes cellules à concaténer sont en colonne
c'est cells(q,4) et pas (4,q) qui, lui, concatene les cellules de la ligne.


"Francis SLAWNY" news:
Y a quelques erreurs dans ta macro.
Essaie ça :

Sub essai()
Sheets("Feuil1").Select
liste = Cells(4, 2)
For q = 3 To 29
liste = liste & "," & Cells(4, q)
Next q
'm = m + 28

Sheets("Feuil2").Select
Cells(1, 2) = liste
End Sub

Et adapte à tes besions

FS


"Pierre F." c87a7$4873819e$55da2ea5$
Bonjour à toutes et tous!

Je cherche à concaténer en VBA une liste de mots présente sur la plage
D2:D29 et placer le résultats sur une autre feuille dans une cellule
précise (qui change en cours de macro).

J'ai écrit ceci:
------------------------
Sheets("Feuil1)
liste = ""
For q = 2 To 29
liste = Cells[4,q] & ", "
Next q

m = m + 28

Sheets("Feuil2").Select
Cells(m, 2) = liste
-------------------------

Il ne fait pas la concaténation et annonce en plus une erreur sur la
feuil2

Merci de me prêter quelques-uns de vos neurones :-)

Cordialement,
Pierre F.






ChrisV
Le #12854701
Bonjour Pierre,

liste = Sheets("Feuil1").[D2]
For q = 3 To 29
liste = liste & "," & Sheets("Feuil1").Cells(q, 4).Value
Next q
m = m + 28
Sheets("Feuil2").Cells(m, 2) = liste


ChrisV


"Pierre F." c87a7$4873819e$55da2ea5$
Bonjour à toutes et tous!

Je cherche à concaténer en VBA une liste de mots présente sur la plage
D2:D29 et placer le résultats sur une autre feuille dans une cellule
précise (qui change en cours de macro).

J'ai écrit ceci:
------------------------
Sheets("Feuil1)
liste = ""
For q = 2 To 29
liste = Cells[4,q] & ", "
Next q

m = m + 28

Sheets("Feuil2").Select
Cells(m, 2) = liste
-------------------------

Il ne fait pas la concaténation et annonce en plus une erreur sur la
feuil2

Merci de me prêter quelques-uns de vos neurones :-)

Cordialement,
Pierre F.


Pierre F.
Le #12854911
ChrisV a écrit :

liste = Sheets("Feuil1").[D2]
For q = 3 To 29
liste = liste & "," & Sheets("Feuil1").Cells(q, 4).Value
Next q
m = m + 28
Sheets("Feuil2").Cells(m, 2) = liste



Mille mercis à tous les trois !!!

Entre les fautes d'inattention (guillemet oublié!) les parenthèses et
crochets qui nécessitent une syntaxe différente..., je ne savais plus
pourquoi ça buggait.

Ça fonctionne nickel maintenant!

Encore une petite question :-)

Si je veux éviter que la macro copie des cellules vides dans la plage
D2:D29, quelle instruction ajouter?

if Len(cells(q,4)<1) then ?

Cordialement,
Pierre F.
ChrisV
Le #12855451
Re,

Un truc du style...

liste = Sheets("Feuil1").[D2]
For q = 3 To 29
With Sheets("Feuil1").Cells(q, 4)
If .Value <> "" Then
liste = liste & "," & .Value
End If
End With
Next q
m = m + 28
Sheets("Feuil2").Cells(m, 2) = liste


ChrisV


"Pierre F." dae3a$48739497$55da2ea5$
ChrisV a écrit :

liste = Sheets("Feuil1").[D2]
For q = 3 To 29
liste = liste & "," & Sheets("Feuil1").Cells(q, 4).Value
Next q
m = m + 28
Sheets("Feuil2").Cells(m, 2) = liste



Mille mercis à tous les trois !!!

Entre les fautes d'inattention (guillemet oublié!) les parenthèses et
crochets qui nécessitent une syntaxe différente..., je ne savais plus
pourquoi ça buggait.

Ça fonctionne nickel maintenant!

Encore une petite question :-)

Si je veux éviter que la macro copie des cellules vides dans la plage
D2:D29, quelle instruction ajouter?

if Len(cells(q,4)<1) then ?

Cordialement,
Pierre F.


Pierre F.
Le #12856861
ChrisV a écrit :

liste = Sheets("Feuil1").[D2]
For q = 3 To 29
With Sheets("Feuil1").Cells(q, 4)
If .Value <> "" Then
liste = liste & "," & .Value
End If
End With
Next q
m = m + 28
Sheets("Feuil2").Cells(m, 2) = liste




Super. Merci!

Evidemment; au lieu de tester le vide, tester le non vide :-))
Je vais essayer ça sur mon cerveau :-)

Cordialement,
Pierre F.
Publicité
Poster une réponse
Anonyme