Copier des colonnes avec conditions

Fermé
tim2023 Messages postés 4 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 22 novembre 2010 - 22 nov. 2010 à 23:09
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 23 nov. 2010 à 07:33
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.
A voir également:

1 réponse

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
Modifié par eriiic le 23/11/2010 à 08:07
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