balayage d'une feuille pour en remplir une autre

p2zouille

XLDnaute Nouveau
Je souhaite pouvoir remplir les cellules bleues de la feuille 3, à l’aide des cellules de la feuille 4, ayant les mêmes informations en colonnes « A », « B », « C » & « D ».
Je joins un fichier exemple.

Merci par avance pour cette aide précieuse.
 

Pièces jointes

  • Classeur1.xls
    69.5 KB · Affichages: 47
  • Classeur1.xls
    69.5 KB · Affichages: 52
  • Classeur1.xls
    69.5 KB · Affichages: 53

mikachu

XLDnaute Occasionnel
Re : balayage d'une feuille pour en remplir une autre

Bonjour,

Des sujets similaires ont déjà été traités (j'ai moi même répondu à certains d'entre eux).

Du moins, voici une possibilité (cliquer sur le bonton de la feuil3)

mikachu
 

Pièces jointes

  • p2zouille.xls
    72.5 KB · Affichages: 46

Robert

XLDnaute Barbatruc
Repose en paix
Re : balayage d'une feuille pour en remplir une autre

Bonjour P2zouille et bienvenu, Bonjour Mikachu, bonjour le forum,

Une autre macro avec des filtres automatiques :
Code:
Sub Macro1()
Dim dl3 As Integer 'déclare la variable dl3 (dernière Ligne de l'onglet Feuil3)
Dim pl3 As Range 'déclare la variable pl3 (Plage de l'onglet Feuil3)
Dim dl4 As Integer 'déclare la variable dl4 (dernière Ligne de l'onglet Feuil4)
Dim pl4 As Range 'déclare la variable pl4 (Plage de l'onglet Feuil4)
Dim cel As Range 'déclare la variable cel (CELlule)

With Sheets("Feuil3") 'prend en compte l'onglet "Feuil3"
    dl3 = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
    Set pl3 = .Range("A2:A" & dl3) 'définit la plage pl3
End With 'fin de la prise en compte de l'onglet "Feuil3"
With Sheets("Feuil4") 'prend en compte l'onglet "Feuil3"
    dl4 = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
    Set pl4 = .Range("A5:A" & dl4) 'définit la plage pl4
End With 'fin de la prise en compte de l'onglet "Feuil4"
For Each cel In pl4 'boucle 1 : sur toutes les cellules cel de la plage pl4
    With Sheets("Feuil3") 'prend en compte l'onglet "Feuil3"
        .Range("A1").AutoFilter 'active le filtre automatique en A1
        For x = 1 To 4 'boucle 2 : sur les quatre critères des colonnes A, B, C et D
            .Range("A1").AutoFilter field:=x, Criteria1:=cel.Offset(0, x - 1).Value 'filtre la colonne para rapport à la valeur de la cellule
        Next x 'prochain critère de la boucle 2
        If pl3.SpecialCells(xlCellTypeVisible).Cells.Count = 1 Then 'condition : si une seule ligne de la plage pl3 est visible
            cel.Offset(0, 4).Copy pl3.SpecialCells(xlCellTypeVisible).Offset(0, 5) 'récupère le nb_1
            cel.Offset(0, 5).Copy pl3.SpecialCells(xlCellTypeVisible).Offset(0, 7) 'récupère le nb_3
        End If 'fin de la condition
        .Range("A1").AutoFilter 'désactive le filtre automatique en A1
    End With 'fin de la prise en compte de l'onglet "Feuil3"
Next cel 'prochaine cellule de la boucle 1
End Sub
 

p2zouille

XLDnaute Nouveau
Re : balayage d'une feuille pour en remplir une autre

Merci, c'est exactement ce que je voulais.

@Mikachu, tu es passé par une fonction "simple" en ET alors que j'étais borné sur mes couleurs mises en évidence en bleu.
Comme quoi...:confused:

@Robert, je n'y avais pas pensé non plus, c'est une bonne leçon.

Enfin un réseau social qui fait avancer des choses utiles, un grand merci.
 

Discussions similaires

Statistiques des forums

Discussions
312 756
Messages
2 091 756
Membres
105 062
dernier inscrit
Ret78