XL 2010 Comparer deux plages de cellules et copier sur une troisième

doggerip

XLDnaute Nouveau
Bonjour à tous,
Cela fait quelques temps que je travail sur un modèle de planning Annuel - Hebdomadaire .
Je coince sur une macro pour comparer les données d'un planning annuel avec une liste de données sur une autre feuille et ensuite copier sur la troisième feuille qui ne comporte pas les même dimensions .

Pour plus de détails

Sur le Planning annuel j'ai une plage de cellule avec des données


Je souhaite les comparés avec la colonne Cellule planning annuel de la feuille données

Si la valeur est trouvé dans la colonne Cellule planning annuel alors j’inscris dans la semaine la correspondance de Cellule Haut et Cellule pour chaque personne (ou numéro ici)

J'ai essayé avec des tableaux et Boucles mais à chaque fois je coince .
Voici mon dernière essai de code
VB:
Sub maj_semaines()
Dim Fdonnees, annuel, i As Integer, nbco, plage, numligsem, f, g, h
Dim cellsemaine, ColonneA, nblignA, anarea, Celan, semarea, Celsem
Dim tabdonnees()
Application.DisplayAlerts = False

'Création des variables pour les feuilles
Set annuel = Worksheets("Congés et HotLine")
Set Fdonnees = Worksheets("Donnees")
Set Asheet = ActiveSheet
Asheetname = ActiveSheet.Name

'==========================================================
'========= RAZ de la couleur de la colonne A ==============
'==========================================================
With Range("A3:B52").Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = 0
        PatternTintAndShade = 0
End With

    'Je boucle sur les lignes des semaine du planning annuel
    For numligsem = 11 To 156 Step 29
     
        'J'attribut la plage qui va lire les semaines sur le calendrier annuel
        Set plage = annuel.Range(annuel.Cells(numligsem, 2), annuel.Cells(numligsem, 63))
             
            'Je compte le nombre de colonnes de cette plage
            nbco = plage.Columns.Count
                 
            'Je boucle sur les colonnes en partant de la fin
            For co = nbco To 2 Step -1
                 
                'Si la colonne = au nom de la feuille en cour est trouvé alors
                If plage.Cells(1, co).Value = Asheetname Then
                             
                'J'arribut les dates des 5 premiers jours à la semaine de la feuille*
                Asheet.Cells(2, 3).Value = annuel.Cells(numligsem + 1, co + 1).Value
                Range("C2").AutoFill Destination:=Range("C2:G2"), Type:=xlFillDefault
             
                'jusque la pas de souci mais après ...
             
                'Attribution la plage à copier dans la feuille annuel
                Set anarea = annuel.Range(annuel.Cells(numligsem + 2, co + 1), annuel.Cells(numligsem + 2, co + 5).Resize(25))
             
                'Je compte le nombre de ligne dans la colonne A de la feuille données
                 nblignA = Fdonnees.Range("A1").End(xlDown).Row
             
                'Je Créer le tableau avec la première colonne de la feuille données
              
                    f = 3
                    g = 3
                    i = 0
                    For Each Celan In anarea
                 
                                ReDim tabdonnees(nblignA, 3)

                                tabdonnees(i, 0) = Fdonnees.Range("A" & i)  'Colonne A
                                tabdonnees(i, 1) = Fdonnees.Range("B" & i)  'Colonne B
                                tabdonnees(i, 2) = Fdonnees.Range("C" & i) 'Colonne C
                 
                            If Celan = tabdonnees(i, 0) Then
                             
                                 Asheet.Cells(f, g).Value = tabdonnees(i, 1)
                                 Asheet.Cells(f + 1, g).Value = Celan.Address

                            End If
                                                  
            
                     If i > 0 Then
                          i = i - 1
                     End If
                        f = f + 2
                        g = g + 1
                     If g > 5 Then
                        g = 3
                     End If
                  
                  
                    Next Celan
                End If
            Next co
    Next numligsem
             
             


End Sub
 

Fichiers joints

Dernière édition:

gonz19

XLDnaute Occasionnel
bonjour,

Je me permet de te joindre mon fichier planning. il fait un peux la même chose que ce que tu veux mais en formule.
Les macro serve uniquement a la MFC et gestion des graphiques.
Je remplie la premier page de tâche et si je remplie la case "Equipe" les données sont automatiquement remplie dans les feuilles semaine ou moi des personnes correspondante. Je te laisse tester et voir les formules. Elles utilisent des cellules nommées pour les plages.

PS: Planning développée à partir d'un fichier récupéré sur ce forum et adapté a mon utilisation et mes envies
 

Fichiers joints

doggerip

XLDnaute Nouveau
Merci gonz19 de m'aider, j'ai bien penser à utiliser les fonction des formules directement dans les cases mais malheureusement les cases des semaines doivent rester éditables pour y ajouter des données manuellement.
 

Discussions similaires


Haut Bas