Microsoft 365 Macro - Concaténer avec variable

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Solution
macro corrigée
VB:
Sub Macro1()
'

Dim TabData() As Variant
With ActiveSheet
    fin = .Range("A" & .Rows.Count).End(xlUp).Row
    TabData = .Range("A2:G" & fin).Value
    For i = LBound(TabData, 1) + 3 To UBound(TabData, 1)
        For j = LBound(TabData, 2) + 4 To UBound(TabData, 2) - 1
            TabData(i, j) = TabData(1, j) & TabData(i, j - 4)
        Next j
    Next i
    VarNum = Replace(Split(TabData(4, 3), "-")(0), "PRODUIT ", "")
    ID_VAR = TabData(4, 2)
    For i = LBound(TabData, 1) + 3 To UBound(TabData, 1)
        NewVarNum = Replace(Split(TabData(i, 3), "-")(0), "PRODUIT ", "")
        If NewVarNum <> VarNum Then
            VarNum = NewVarNum
            ID_VAR = TabData(i, 2)
        End If
        TabData(i...
macro corrigée
VB:
Sub Macro1()
'

Dim TabData() As Variant
With ActiveSheet
    fin = .Range("A" & .Rows.Count).End(xlUp).Row
    TabData = .Range("A2:G" & fin).Value
    For i = LBound(TabData, 1) + 3 To UBound(TabData, 1)
        For j = LBound(TabData, 2) + 4 To UBound(TabData, 2) - 1
            TabData(i, j) = TabData(1, j) & TabData(i, j - 4)
        Next j
    Next i
    VarNum = Replace(Split(TabData(4, 3), "-")(0), "PRODUIT ", "")
    ID_VAR = TabData(4, 2)
    For i = LBound(TabData, 1) + 3 To UBound(TabData, 1)
        NewVarNum = Replace(Split(TabData(i, 3), "-")(0), "PRODUIT ", "")
        If NewVarNum <> VarNum Then
            VarNum = NewVarNum
            ID_VAR = TabData(i, 2)
        End If
        TabData(i, UBound(TabData, 2)) = TabData(1, UBound(TabData, 2)) & ID_VAR
    Next i
    .Range("A2:G" & fin) = TabData
End With

End Sub

à noter que ton nouveau fichier n'est pas génial, vu que les 3 numéros parents sont identiques...
Edit: J'ai rechargé la macro qui contenait une erreur
 
macro corrigée
VB:
Sub Macro1()
'

Dim TabData() As Variant
With ActiveSheet
    fin = .Range("A" & .Rows.Count).End(xlUp).Row
    TabData = .Range("A2:G" & fin).Value
    For i = LBound(TabData, 1) + 3 To UBound(TabData, 1)
        For j = LBound(TabData, 2) + 4 To UBound(TabData, 2) - 1
            TabData(i, j) = TabData(1, j) & TabData(i, j - 4)
        Next j
    Next i
    VarNum = Replace(Split(TabData(4, 3), "-")(0), "PRODUIT ", "")
    ID_VAR = TabData(4, 2)
    For i = LBound(TabData, 1) + 3 To UBound(TabData, 1)
        NewVarNum = Replace(Split(TabData(i, 3), "-")(0), "PRODUIT ", "")
        If NewVarNum <> VarNum Then
            VarNum = NewVarNum
            ID_VAR = TabData(i, 2)
        End If
        TabData(i, UBound(TabData, 2)) = TabData(1, UBound(TabData, 2)) & ID_VAR
    Next i
    .Range("A2:G" & fin) = TabData
End With

End Sub

à noter que ton nouveau fichier n'est pas génial, vu que les 3 numéros parents sont identiques...
Ils ne sont pas identiques. La colonne G n'est pas correct, elle reprend que le parent B5
 
Juste une remarque pour les deux solutions proposées
par @Phil69970 et moi

quel est le critère qui determine le changement de numéro parent??
dans ma solution, c'est lorsque le numéro de produit (colonne C) est incrémenté: Produit 1 /2 / 3..
dans la solution de Phil (si je ne me trompe pas) c'est lorsque les deux premiers chiffres de la colonne B changent: 92 93 96
 
Re

@Aleksii

quel est le critère qui determine le changement de numéro parent??
dans ma solution, c'est lorsque le numéro de produit (colonne C) est incrémenté: Produit 1 /2 / 3..
dans la solution de Phil (si je ne me trompe pas) c'est lorsque les deux premiers chiffres de la colonne B changent: 92 93 96
Exact Vincent je suis parti de l'idée que c'est bien le changement 92,93 .... de la colonnes B qui est le déterminant et non le changement de milliers de la colonne A

Mais les 2 fonctionnent comme demandé

Ci joint une version légèrement mieux optimisé

Merci de ton retour

@Phil69970
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
354
Réponses
4
Affichages
148
Réponses
18
Affichages
526
Réponses
8
Affichages
113
Réponses
2
Affichages
50
Retour