VBA excel : Regrouper données texte de plusieurs cellules dans un seule cellule

debidebo67

XLDnaute Nouveau
Bonjour,

j'ai réussi à faire ma macro pour une ligne, pour voir si elle fonctionne.:D
Ensuite j'ai essayé de mettre en place une variable pour qu'elle s'applique à toutes les lignes !
et là ça marche pas :confused: :
(Colonne H = 7 ; G =7 ; H = 8; I = 9)

Sub essaimacro()

Dim i As Integer
i = 5
Worksheets("tableau 1").Range("P5:p1000").ClearContents
Application.ScreenUpdating = False

If Cells(7, i) = "" Then
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(8, i) & " - " & Cells(9, i)
ElseIf Range(8, i) & Cells(9, i) = "" Then
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(7, i)
ElseIf Cells(8, i) = "" Then
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(7, i) & " - " & Cells(9, i)
ElseIf Cells(7, i) & Cells(8, i) = "" Then
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(9, i)
Else
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(7, i) & " - " & Cells(8, i) & " - " & Cells(9, i)
i = i + 1
End If

Application.ScreenUpdating = True
End Sub

pourriez-vous m'aider sur l'erreur SVP ?

Merci d'avance
 

Pièces jointes

  • Conception massifs test1 - Copie.zip
    889.9 KB · Affichages: 138
  • Conception massifs test1 - Copie.zip
    889.9 KB · Affichages: 179
  • Conception massifs test1 - Copie.zip
    889.9 KB · Affichages: 136

simraill

XLDnaute Occasionnel
Re : VBA excel : Regrouper données texte de plusieurs cellules dans un seule cellule

Bonjour debidebo,
Il faudrait que tu utilise une boucle :

Code:
Sub essaimacro()

Dim i As Integer
i = 5
Worksheets("tableau 1").Range("P5:P1000").ClearContents
Application.ScreenUpdating = False

for i = 5 to 1000
If Cells(7, i) = "" Then
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(8, i) & " - " & Cells(9, i) 
ElseIf Range(8, i) & Cells(9, i) = "" Then
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(7, i) 
ElseIf Cells(8, i) = "" Then
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(7, i) & " - " & Cells(9, i) 
ElseIf Cells(7, i) & Cells(8, i) = "" Then
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(9, i) 
Else
Cells(i, 16).Value = Cells(6, i) & " - " & Cells(7, i) & " - " & Cells(8, i) & " - " & Cells(9, i)
End If
Next i

Application.ScreenUpdating = True
End Sub
 

simraill

XLDnaute Occasionnel
Re : VBA excel : Regrouper données texte de plusieurs cellules dans un seule cellule

Oui il faut rajouter le for i = 5 to 1000 avant ton premier if,
et next i à la fin de tes if.
Cela créera une boucle qui tournera jusqu'à ce que i est atteint 1000.
 

debidebo67

XLDnaute Nouveau
Re : VBA excel : Regrouper données texte de plusieurs cellules dans un seule cellule

ci joint le fichier avec la macro
 

Pièces jointes

  • Conception massifs test1 - Copie.zip
    938.2 KB · Affichages: 168
  • Conception massifs test1 - Copie.zip
    938.2 KB · Affichages: 148
  • Conception massifs test1 - Copie.zip
    938.2 KB · Affichages: 259

debidebo67

XLDnaute Nouveau
Re : VBA excel : Regrouper données texte de plusieurs cellules dans un seule cellule

ok merci beaucoup, :D

pour information j'avais inversé les lignes et les colonnes la bonne macro est la suivante (pour ceux qui voudront s'inspirer de la discutions pour leurs projets) :

Sub essaimacroboucle()

Dim i As Integer
i = 5
Worksheets("tableau 1").Range("P5:p1000").ClearContents
Application.ScreenUpdating = False

For i = 5 To 1000

If Cells(7, i) = "" Then
Cells(i, 16).Value = Cells(i, 6) & " - " & Cells(i, 8) & " - " & Cells(i, 9)

ElseIf Cells(i, 8) & Cells(i, 9) = "" Then
Cells(i, 16).Value = Cells(i, 6) & " - " & Cells(i, 7)

ElseIf Cells(i, 8) = "" Then
Cells(i, 16).Value = Cells(i, 6) & " - " & Cells(i, 7) & " - " & Cells(i, 9)

ElseIf Cells(i, 7) & Cells(i, 8) = "" Then
Cells(i, 16).Value = Cells(i, 6) & " - " & Cells(i, 9)

Else
Cells(i, 16).Value = Cells(i, 6) & " - " & Cells(i, 7) & " - " & Cells(i, 8) & " - " & Cells(i, 9)
i = i + 1
End If
Next i
End Sub
 

simraill

XLDnaute Occasionnel
Re : VBA excel : Regrouper données texte de plusieurs cellules dans un seule cellule

Content que ça marche :p
Par contre les lignes i = 5 et i = i +1 sont devenues inutiles.
L'initialisation de la variable est faite avec for i = 5, et l'incrémentation avec Next i.
 

Discussions similaires

Réponses
17
Affichages
760
Réponses
0
Affichages
83