Macro qui concatène les cellules d'une feuille vers la cellule d'une autre
Bonjour,
J'ai créé un classeur Excel "Préparation RP" avec 3 feuilles "Inventaire Terrain" ou je note la quantité de matériel sur chaque point, "Commande" ou la somme de chaque matériel apparait et "Approvisionnement".
Une macro "ViderPreparation" vide les cellules "B2/CW101" de "Inventaire Terrain" et "B2/E101" de "Approvisionnement".
Une macro "Concatener" avec une boucle qui concatène "B2" si remplie avec "B1" de "Inventaire Terrain" (puis "C2" si remplie avec "C1", jusqu'à "CW2" si remplie avec "CW1") vers "C2" de "Approvisionnement". Ce qui me rempli dans la colonne "Situations Demandées" la liste de matériel pour le "Point n 1".
Maintenant, j'aurais besoin de votre aide afin qu'une fois la boucle terminée, elle se reproduise avec la ligne suivante de "Inventaire Terrain" ("B3" si remplie avec "B1" de "Inventaire Terrain" (puis "C3" si remplie avec "C1", jusqu'à "CW3" si remplie avec "CW1") vers "C3" de "Approvisionnement") et ainsi de suite jusqu'à "B101" si remplie avec "B1" de "Inventaire Terrain" (puis "C101" si remplie avec "C1", jusqu'à "CW101" si remplie avec "CW1") vers la cellule correspondant de "Approvisionnement".
Voici le fichier Excel ainsi que la macro en question :
Sub Concatener()
'Déclaration des variables
Dim wsInventaire As Worksheet
Dim wsApprovisionnement As Worksheet
Dim celB2 As Range
Dim celB1 As Range
Dim celC2 As Range
Dim celC1 As Range
Dim strVal As String
'Définition des variables
Set wsInventaire = ThisWorkbook.Sheets("Inventaire Terrain")
Set wsApprovisionnement = ThisWorkbook.Sheets("Approvisionnement")
'Boucle de concaténation
For i = 2 To 101
Set celB2 = wsInventaire.Columns(i).Cells(2)
Set celB1 = wsInventaire.Columns(i).Cells(1)
If celB2.Value <> "" Then
strVal = celB2.Value & " " & celB1.Value & ". "
Else
strVal = ""
End If
'Concaténation de strVal avec la valeur précédente
If i > 2 Then
strVal = wsApprovisionnement.Range("C2").Value & strVal
End If
'Enregistrement de la valeur conconcaténée
wsApprovisionnement.Range("C2").Value = strVal
Next i
End SubJ'espère avoir été le plus claire possible (connaissances limitées) et merci d'avance pour vos retour.
Bonne soirée.
Bonjour,
Ceci:
Sub Concatener()
'Déclaration des variables
Dim wsInventaire As Worksheet
Dim wsApprovisionnement As Worksheet
Dim celB2 As String
Dim celB1 As String
Dim celC2 As String
Dim celC1 As String
Dim strVal As String
'Définition des variables
Set wsInventaire = ThisWorkbook.Sheets("Inventaire Terrain")
Set wsApprovisionnement = ThisWorkbook.Sheets("Approvisionnement")
'Boucle de concaténation
For j = 2 To 101
For i = 2 To 101
celB2 = wsInventaire.Cells(j, i)
celB1 = wsInventaire.Cells(1, i)
'Concaténation de strVal avec la valeur précédente
If celB2 <> "" Then strVal = strVal & ". " & celB2 & " " & celB1
Next i
'Enregistrement de la valeur conconcaténée
wsApprovisionnement.Cells(j, "C").Value = strVal
strVal = ""
Next j
End SubCdlt
Bonjour Arturo83,
Après test, tout à l'air de fonctionner.
Un grand merci pour la réactivité et l'efficacité !