Copier des colonnes avec conditions

tim2023 Messages postés 4 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je travaille sur la réalisation d'un classeur sous excell2007 pour le suivi de mes élèves. Voici le classeur (démo)

https://www.cjoint.com/?0lww5v5yK7b

Je pense que pour ce que je veux faire, il me faut créer une macro (je suis débutant en macros).

Voici ce que je voudrais faire :

Je voudrais copier les colonnes de la feuille de calcul "saisie 1" vers la feuille de calcul correspondant à chaque élève sans écraser les données déjà présentes dans la feuille de calcul de l'élève.

Exemple : copier la colonne "Nicolas" (sans les lignes 1 et 2) de la feuille de calcul "saisie1" vers la feuille de calcul "Nicolas" sans effacer les données déjà présentes dans la feuille de calcul "Nicolas", puis effectuer la même opération pour les autres élèves (si possible dans la même macro).

Pensez vous que celà est possible ? Si oui, pourriez vous me fournir le début de la macro (pour les 2 premiers élèves, je pense qu'après j'arriverai à me débrouiller par copier / coller des codes et changements des valeurs propres à chaque élève).

D'avance merci pour votre aide.

1 réponse

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Une proposition :
    Sub Maj()   
        Dim shSaisie As Worksheet, shNom As Worksheet   
        Dim col As Long, lig As Long   
        Set shSaisie = Worksheets("Saisie 1")   
        With shSaisie   
            For col = 2 To .[IV2].End(xlToLeft).Column   
                On Error GoTo fin   
                Set shNom = Worksheets(.Cells(2, col).Value)   
                On Error GoTo 0   
                For lig = 3 To .[A65536].End(xlUp).Row   
                    If shNom.Cells(lig, 2) = "" And .Cells(lig, col) <> "" Then shNom.Cells(lig, 2) = .Cells(lig, col)   
                Next lig   
            Next col   
        End With   
        Exit Sub   
    fin:   
        MsgBox ("Feuille " & Worksheets(shSaisie.Cells(2, col).Value) & " absente")   
    End Sub   
    


    Par contre tu ne précisais pas, je colle les données en colonne 2 des feuilles.
    Et je contrôle les données, pas les couleurs, si tu les veux en plus ou à la place précise-le.

    eric

    edit: pour les couleurs :
    If shNom.Cells(lig, 2).Interior.ColorIndex = xlNone Then shNom.Cells(lig, 2).Interior.ColorIndex = .Cells(lig, col).Interior.ColorIndex
    0