Dupliquer des lignes avec une condition

amellena

XLDnaute Nouveau
Bonjour à tous,

Avant toute chose, je vous souhaite mes meilleurs voeux de bonheur pour cette nouvelle année. !!!!

Et quoi de mieux qu'un petit fichier excel pour la commencer ...
Je souhaitais savoir si quelqu'un savait comment dupliquer des lignes excel avec une condition.
Je souhaiterai dupliquer autant de lignes dans la plage (A5:D1O) de la base 1, selon les critères de la base 2.
à savoir si A5=G5, alors on insère valeur H5
et on duplique la ligne pour avoir la m^me chose car A5=G6 aussi etc etc
Je pense que ce n'est pas très bien expliqué, alors j'ai mis le fichier en pj.
Merci d'avance !
 

Pièces jointes

  • FICHIER T.xls
    20.5 KB · Affichages: 69

ROGER2327

XLDnaute Barbatruc
Re : Dupliquer des lignes avec une condition

Bonjour à tous et meilleurs vœux pour 2009.
Pour amellena : Je ne suis pas sûr d'avoir compris. Voyez le classeur joint.​
À bientôt,
ROGER2327
 

Pièces jointes

  • Copie de FICHIER T.xls
    18.5 KB · Affichages: 78
  • Copie de FICHIER T.xls
    18.5 KB · Affichages: 89
  • Copie de FICHIER T.xls
    18.5 KB · Affichages: 95

amellena

XLDnaute Nouveau
Re : Dupliquer des lignes avec une condition

Bonjour Roger2327,
En effet, je me suis plantée en tirant mes lignes. Vous aviez bien compris! en fait, les lignes doivent être dupliquées à l'identique. Seule la colonne client change.
désolée et merci !
amellena
 

ROGER2327

XLDnaute Barbatruc
Re : Dupliquer des lignes avec une condition

Voilà ci-joint une solution en VBA qui peut être adaptée à d'autres données (listes plus longues et emplacements différents...)​

Bonne continuation !
ROGER2327
 

Pièces jointes

  • Copie de FICHIER T.xls
    31.5 KB · Affichages: 113
  • Copie de FICHIER T.xls
    31.5 KB · Affichages: 116
  • Copie de FICHIER T.xls
    31.5 KB · Affichages: 122

amellena

XLDnaute Nouveau
Re : Dupliquer des lignes avec une condition

Super, c'est exactement ca !!Merci beaucoup Roger 2327.
Par contre, puis-je abuser et te demander comment fait-on pour reproduire la VBA. Car j'ai regarder le détail pas à pas de la macro, mais n'y comprends rien !
Peux-tu me donner le détail pas à pas en francais STP.
1/ ouvrier fichier, marcro
2/ séléctionner .....
etc etc .
Ce serait vraiment sympa de ta part, même si tu m'as déjà beaucoup aidé !!!
merci
 

ROGER2327

XLDnaute Barbatruc
Re : Dupliquer des lignes avec une condition

Re...
Voici le code commenté :
Code:
Sub RECAP()
Dim i As Long, j As Long, k As Long, B1, B2, R, nR As Long
    B1 = Me.Range("BASE_1").Value ' B1 prend les données de la zone BASE_1 sous forme
' d'un tableau. B(i, j) correspond à la cellule en ligne i et en colonne j.
    B2 = Me.Range("BASE_2").Value ' Idem avec la zone BASE_2.
    Me.Range("RECAP").ClearContents ' La zone RECAP est vidée.
    R = Me.Range("RECAP").Value ' R prend les données de la zone RECAP (toutes vides
' à cause de la ligne précédente).
    For i = 1 To UBound(B1, 1) ' pour i de 1 à 'nombre de lignes de B1' : on va
' explorer le tableau B1 ligne par ligne.
        For j = 1 To UBound(B2, 1) ' idem pour le tableau B2.
            If B1(i, 1) = B2(j, 1) Then ' Si la valeur de la 1ére colonne de la ligne i
' de B1 est égale à la valeur de la 1ére colonne de la ligne j de B2 ...
                nR = nR + 1 ' ... on va placer dans la ligne nR de R ...
                For k = 1 To UBound(B1, 2) ' ... les valeurs de toutes les colonnes de
' la ligne i de B1 dans la ligne nR de R :
                    R(nR, k) = B1(i, k)
                Next k ' Renvoie à 'For k...' pour la colonne suivante de B1 si k < nombre
' de colonnes de B1. Sinon on passe à la suite :
                R(nR, k) = B2(j, 2) ' On complète la ligne nR de R par la valeur de la
' deuxième colonne de la ligne j de B2
            End If
        Next j ' Renvoie à For j...' tant qu'on a pas lu toutes les lignes de B2.
    Next i ' Renvoie à For i...' tant qu'on a pas lu toutes les lignes de B1.
    Me.Range("RECAP").Value = R ' Affiche le tableau R dans la zone RECAP.
' Pour adapter la procédure à une autre configuration, par exemple si la zone BASE_2 est
' dans une autre feuille nommée "Fournisseur-Client", il suffira de remplacer :
'
' B2 = Me.Range("BASE_2").Value
'      par :
' B2 = Worksheets("Fournisseur-Client").Range("BASE_2").Value
'
' Si le code n'est pas placé dans la feuille contenant la zone BASE_1 mais dans un module
' standard, il faudra remplacer :
' Me.Range("BASE_1")
'      par :
' Worksheets("nom de la feuille contenant la zone BASE_1").Range("BASE_1")
' etc.
End Sub
Bon courage !
ROGER2327
 

Discussions similaires

Statistiques des forums

Discussions
312 219
Messages
2 086 372
Membres
103 198
dernier inscrit
CACCIATORE