concatenner les cellules a 1

jebbayou

XLDnaute Junior
Bonjour a tous,

Voila je vous expose mon problème, j'utilise VB depuis aller 4 jours et je suis coincé sur une parti de macro.
j'utilise la formule suivante dans la colonne E : =SI(C9=1;CONCATENER('Marseille '!B9;" ";'Marseille '!A9);"")
Si C=1 alors il y a un résultat dans la colonne E (nom + prénom)
Je souhaiterai concaténer que les cellules avec nom + prénom.
mon problème est que les cellule sans résultat ne sont pas vide vu que la formule retourne "" et donc je ne peux pas utiliser Do While Not (IsEmpty(Worksheets("Donnees").Cells(ii, 5)))

j'utilise le code suivant :
If Range("C8").Value > 0 Then

ii = 9
Do While Not Cells(ii, 5) = "" 'sauf que ca ne marche pas vu qu'elle s'arrête a la première sans résultat même s'il y a d'autres cellule en bas

'(IsEmpty(Worksheets("Donnees").Cells(ii, 5)))
liste = liste & Chr(10) & Cells(ii, 5)
ii = ii + 1
Loop

Merci de votre aide.
 

tototiti2008

XLDnaute Barbatruc
Re : concatenner les cellules a 1

Bonjour jebbayou,

si tu veux boucler de la ligne 9 à la dernière ligne remplie, tu peux essayer

Code:
For ii = 9 to range("E1048576").end(xlup).row
if Cells(ii, 5) <>"" then liste = liste & Chr(10) & Cells(ii, 5)
Next ii

Edit : Bonjour Odesta :)
 
Dernière édition:

Odesta

XLDnaute Impliqué
Re : concatenner les cellules a 1

Bonjour
Pour cela, nous utilisons une astuce qui consiste à faire la boucle entre le début et la dernière valeur de la colonne choisi. De manière à éviter ce genre de désagrement pour les valeurs nulles.

Par exemple :

VB:
dim derniere_ligne as long

derniere_ligne = Worksheets("Donnees").Range("C65000").End(xlup).Row 'renvoie la ligne de la cellule la plus basse de la colonne C
For i = 5 to derniere_ligne
    'intruction
Next

Cdt

Olivier


Edit : Bonjour Toto !
 

Staple1600

XLDnaute Barbatruc
Re : concatenner les cellules a 1

Bonjour à tous


Une solution sans boucle
Code:
Sub Macro1()
Sheets(1).Range("C1:C" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeConstants, 1).Offset(, 2).FormulaR1C1 = "=RC[-3]&"" ""&RC[-4]"
End Sub
PS: adapter la référence à la feuille

PS2: Toujours et encore le SoftMama's way ;)
 
Dernière édition:

jebbayou

XLDnaute Junior
Re : concatenner les cellules a 1

Merci a toi Staple,

Mais j'ai besoins de la boucle pour autre chose.
Par contre je viens de rencontré un autre problème.
Voila j'ai besoin de faire une boucle pour concaténer avec une condition IF a l'intérieur et envoyer un mail du résultat.
j'ai besoin de faire plusieurs condition IF (similaire a ci-dessous) avec une variable liste qui se réinitialise différemment avant chaque if (les valeurs de liste en dur dans une cellule excel)
dans le corps du mail il faut envoyer le résultat du toutes les conditions IF
le code utilisé est le suivant :

If Range("C6").Value > 0 Then

ii = 8

derniere_ligne = Worksheets("Donnees").Range("C65000").End(xlUp).Row
liste = Worksheets("Donnees").Range("K6").Value
For ii = 8 To 65000

If (Cells(ii, 5) <> "" And Cells(ii, 3) = 1) Then liste = liste & a & Cells(ii, 5)
a = Chr(10)

Range("G9") = liste

Call envoi_Tech ' pour envoi mail

Ebody = Worksheets("Donnees").Range("G9").Value

Si vous pouvez m'aider???
 

Discussions similaires

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus