XL 2010 VBA copier/coller cellules en fonction de 2 critères

arno1234

XLDnaute Nouveau
Bonjour à tous,

je viens chercher votre aide sur ce forum car j'ai besoin de créer une macro me permettant de copier les valeurs d'une colonne de la feuille 1 et de les reporter dans la feuille 2 en respectant 2 critères : critère de la colonne A de la feuille 1 ainsi que critère de la valeur en I2 de la feuille 1. Les valeurs doivent ensuite se coller dans la feuille dans la colonne correspondant a la valeur I2 de la feuille 1 et dans la même ligne.

En PJ le fichier de travail qui sera plus parlant.

Je vous remercie d'avance,

Arnaud.
 

Pièces jointes

  • test vba.xlsx
    13.9 KB · Affichages: 11
Solution
Bonjour,
Code à mettre dans celui de la feuille Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sem As Range, Emp1 As Range, Emp2 As Range
    If Target.Address = [I1].Address Then ' la cellule modifiée doit être I7
      ' On recherche I7 dans la ligne 1 de Feuil2
        Set Sem = Sheets("Feuil2").Rows(1).CurrentRegion.Find(Target, , xlValues, xlWhole)
        If Not Sem Is Nothing Then
          ' pour tous les Emplacements de Feuil1
            For Each Emp1 In Me.Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)
              ' On recherche Emp1 dans feuil2
                Set Emp2 = Sheets("Feuil2").Columns("A").Find(Emp1, , xlValues, xlWhole)
              ' On renseigne la colonne de la semaine en Feuil2...

fanch55

XLDnaute Barbatruc
Bonjour,
Code à mettre dans celui de la feuille Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sem As Range, Emp1 As Range, Emp2 As Range
    If Target.Address = [I1].Address Then ' la cellule modifiée doit être I7
      ' On recherche I7 dans la ligne 1 de Feuil2
        Set Sem = Sheets("Feuil2").Rows(1).CurrentRegion.Find(Target, , xlValues, xlWhole)
        If Not Sem Is Nothing Then
          ' pour tous les Emplacements de Feuil1
            For Each Emp1 In Me.Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)
              ' On recherche Emp1 dans feuil2
                Set Emp2 = Sheets("Feuil2").Columns("A").Find(Emp1, , xlValues, xlWhole)
              ' On renseigne la colonne de la semaine en Feuil2
                If Not Emp2 Is Nothing Then Sheets("Feuil2").Cells(Emp2.Row, Sem.Column) = Emp1.Offset(, 5)
            Next
        End If
    End If
End Sub
 

arno1234

XLDnaute Nouveau
Bonjour,

merci pour votre réponse mais je n'arrive pas à exécuter le code. Faut-il que je code dans un nouveau module ou que je double clique dans la feuille équivalente à la feuil1 de mon exemple et que j'y colle le code ?
J'ai essayé les 2 et quand je fais exécuter, cela me demande un nom de macro et cela crée un nouveau sub()....
 

fanch55

XLDnaute Barbatruc
Bonjour Fanch,

j'ai besoin de rajouter une colonne dans la feuille 2 (les semaines commencent donc en C et non en B) mais je n'arrive pas à modifier la macro.

Pouvez-vous m'aider ?

Merci !
Rien n'empêche l'ajout d'une colonne en feuille 2 .
arno.gif
 

Discussions similaires

Réponses
2
Affichages
344

Statistiques des forums

Discussions
314 719
Messages
2 112 183
Membres
111 456
dernier inscrit
Bologne5