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

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.
Ensuite j'ai essayé de mettre en place une variable pour qu'elle s'applique à toutes les lignes !
et là ça marche pas :
(Colonne H = 7 ; G =7 ; H = 8; I = 9)

Sub essaimacro()

Dim i As Integer
i = 5
Worksheets("tableau 1").Range("P51000").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: 169
  • Conception massifs test1 - Copie.zip
    938.2 KB · Affichages: 148
  • Conception massifs test1 - Copie.zip
    938.2 KB · Affichages: 259

simraill

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

Je pense avoir trouvé l'erreur.

Sur ton premier ElseIf, tu utilise Range au lieu de Cells.
En modifiant ceci ça fonctionne chez moi.
 

debidebo67

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

ok merci beaucoup,

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("P51000").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
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.
 

debidebo67

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

En plus d'être inutile j'ai constaté qu'elles sont source d'erreurs !

si on utilise For i = x et next i il ne faut pas ajouter i = i +1 et i = x
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…