Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Concatener en VBA, syntaxe

7 réponses
Avatar
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.

7 réponses

Avatar
Daniel.C
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." a écrit dans le message de news:
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.


Avatar
Francis SLAWNY
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." a écrit dans le message de news:
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.


Avatar
Francis SLAWNY
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" a écrit dans le message de
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." a écrit dans le message de news:
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.






Avatar
ChrisV
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." a écrit dans le message de news:
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.


Avatar
Pierre F.
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.
Avatar
ChrisV
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." a écrit dans le message de news:
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.


Avatar
Pierre F.
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.