Explication code vba

mdm56

XLDnaute Nouveau
Bonjour,
J'ai trouvé ce code vba sur un site et je souhaiterais avoir quelques explications.
Car j'aimerais le modifier et m'en servir pour mon fichier.
Quand j’exécute la macro celle-ci bug, voir image jointe.
Je suis nouvelle sur le forum et je suis une novice dans la programmation VBA.
J'utilise excel 2010.
Merci d'avance.
Cordialement.
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    23.3 KB · Affichages: 47
  • Capture.jpg
    Capture.jpg
    23.3 KB · Affichages: 87
  • Capture.jpg
    Capture.jpg
    23.3 KB · Affichages: 96

mdm56

XLDnaute Nouveau
Re : Explication code vba

Bonjour,
Voilà le fichier, ce que je souhaiterais faire c'est de colorier
les quatre cellules par équipe mais que sur les postes d'après-midi.
Cordialement.
Merci.
Désolé j'ai oubliée de joindre le fichier.
 

Pièces jointes

  • Taches.xlsm
    124.9 KB · Affichages: 49
  • Taches.xlsm
    124.9 KB · Affichages: 66
  • Taches.xlsm
    124.9 KB · Affichages: 71

vgendron

XLDnaute Barbatruc
Re : Explication code vba

Hello

j'ai du mal à comprendre le code que tu as trouvé, donc, j'en ai refait un selon ce que j'ai compris

Code:
Sub GriserLesJoursDeSemaine()

     'On vérifie que 'P5S' et 'T5S' et 'PostesAM' sont au même mois
    If Range("B7").Value <> Sheets("P5S").Range("T1").Value Or _
            Range("B7").Value <> Sheets("T5S").Range("T1").Value Then
        MsgBox "Les feuilles ''P5S'', ''T5S'' et ''PostesAM'' ne sont pas du même mois !", 16
        End
    End If
            
    
    'pour chaque jour du mois: colonne B
    For Each Cell In Range("B8:B" & Range("B" & Rows.Count).End(xlUp).Row)

                'On cherche quelle équipe est de PosteAM
                Set d = Cell.Offset(0, 2).Resize(1, 6).Find("S", LookIn:=xlValues)
                If Not d Is Nothing Then
                    equipe = Cells(6, d.Column)
                    'MsgBox equipe
                End If
                
                With Sheets("P5S")
                    'recherche de la position de l'équipe concernée (ligne 5)
                    Set colonne = .Range("D5:W5").Find(equipe, LookIn:=xlValues)
                    'MsgBox colonne.Column
                    'recherche de la ligne du jour en cours
                    Set ligne = .Range("A8:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(Day(Cell.Value))
                    'If Not ligne Is Nothing Then
                        'MsgBox ligne.Row
                   ' End If
                    '.Cells(ligne.Row, colonne.Column).Resize(1, 4).Select
                    .Cells(ligne.Row, colonne.Column).Resize(1, 4).Interior.color = RGB(191, 191, 191)
                End With
                
                
                'refaire la meme chose pour la feuille T5S
                
NextCell:
    Next Cell
End Sub
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : Explication code vba

avec le code nettoyé ;-)
Code:
Sub GriserLesJoursDeSemaine()

'On vérifie que 'P5S' et 'T5S' et 'PostesAM' sont au même mois
If Range("B7").Value <> Sheets("P5S").Range("T1").Value Or Range("B7").Value <> Sheets("T5S").Range("T1").Value Then
    MsgBox "Les feuilles ''P5S'', ''T5S'' et ''PostesAM'' ne sont pas du même mois !", 16
    End
End If


'pour chaque jour du mois: colonne B
For Each Cell In Range("B8:B" & Range("B" & Rows.Count).End(xlUp).Row)
    'On cherche quelle équipe est de PosteAM
    Set d = Cell.Offset(0, 2).Resize(1, 6).Find("S", LookIn:=xlValues)
    If Not d Is Nothing Then
        equipe = Cells(6, d.Column)
    End If
    
    With Sheets("P5S")
        'recherche de la position de l'équipe concernée (dans la ligne 5)
        Set colonne = .Range("D5:W5").Find(equipe, LookIn:=xlValues)
                     
        'recherche de la ligne du jour en cours (dans la colonne A)
        Set ligne = .Range("A8:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Find(Day(Cell.Value))
                          
        'coloration
        .Cells(ligne.Row, colonne.Column).Resize(1, 4).Interior.color = RGB(191, 191, 191)
    End With
    
    'refaire la meme chose pour la feuille T5S
                
NextCell:
    Next Cell
End Sub
 

mdm56

XLDnaute Nouveau
Re : Explication code vba

Bonjour vgendron
Merci pour ta réponse.
Je viens de tester ta macro qui fonctionne sur une feuille mais dés que je l’intègre sur la deuxième feuille,
j'ai une erreur 91 qui se produit.
Voici deux captures d'écran pour étayer mes dires.
Capture.jpg
Capture01.jpg
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    58.5 KB · Affichages: 92
  • Capture01.jpg
    Capture01.jpg
    56.6 KB · Affichages: 83

vgendron

XLDnaute Barbatruc
Re : Explication code vba

Hello

Normal que ca plante.. dans ta feuille T5S, les équipes sont numérotées de 6 à 10..
la macro cherche des équipes de 1 à 5 (d'après l'onglet PostesAM)

Est ce une erreur de numérotation dans l'onglet T5S ?
si non, il faudrait
1) faire apparaitre les équipes de 6 à 10 dans le "PosteAm"
2) modifier le code pour gerer le changement d'onglet (P5S ou T5S) en fonction du numéro d'équipe
 
Dernière édition:

mdm56

XLDnaute Nouveau
Re : Explication code vba

Re bonjour,
Je viens de renommer les équipes de A à E et cela fonctionne.
Mais maintenant quand je change de mois et que c'est un mois de 30 jours, j'ai l'erreur 13 qui apparaît.
Voir capture écran.
Capture2.jpg
Capture3.jpg
J'abuse peut-être.
Merci pour tout ce que vous faites d'aider des débutants comme nous.
Merci encore.
Bonne journée.
 

Pièces jointes

  • Capture2.jpg
    Capture2.jpg
    57 KB · Affichages: 84
  • Capture3.jpg
    Capture3.jpg
    58.5 KB · Affichages: 84

vgendron

XLDnaute Barbatruc
Re : Explication code vba

Pas de souci

ce nouveau souci vient du fait que pour Février par exemple, ton tableau PosteAM, s'arrete à 28
or la macro detecte du contenu jusqu'à 31: ce contenu étant ta formule.. et au niveau des équipes ca donne du #valeur.. VBA n'aime pas..
il faut donc vérifier que dans la colonne B, il n'y ait pas du vide:
ca fait juste une ligne à rajoutter dans le code

Code:
Sub GriserLesJoursDeSemaine()

'On vérifie que 'P5S' et 'T5S' et 'PostesAM' sont au même mois
If Range("B7").Value <> Sheets("P5S").Range("T1").Value Or Range("B7").Value <> Sheets("T5S").Range("T1").Value Then
    MsgBox "Les feuilles ''P5S'', ''T5S'' et ''PostesAM'' ne sont pas du même mois !", 16
    End
End If


'pour chaque jour du mois: colonne B
For Each Cell In Range("B8:B" & Range("B" & Rows.Count).End(xlUp).Row)
    'On cherche quelle équipe est de PosteAM
    'on vérifie que la cellule ne soit pas vide
    If Cell <> "" Then
        Set d = Cell.Offset(0, 2).Resize(1, 6).Find("S", LookIn:=xlValues)
        If Not d Is Nothing Then
            equipe = Cells(6, d.Column)
        End If
    
        With Sheets("P5S")
            'recherche de la position de l'équipe concernée (dans la ligne 5)
            Set colonne = .Range("D5:W5").Find(equipe, LookIn:=xlValues)
                     
            'recherche de la ligne du jour en cours (dans la colonne A)
            Set ligne = .Range("A8:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Find(Day(Cell.Value))
                          
            'coloration
            .Cells(ligne.Row, colonne.Column).Resize(1, 4).Interior.color = RGB(191, 191, 191)
        End With
    
        With Sheets("T5S")
            'recherche de la position de l'équipe concernée (dans la ligne 5)
            Set colonne = .Range("D5:W5").Find(equipe, LookIn:=xlValues)
                     
            'recherche de la ligne du jour en cours (dans la colonne A)
            Set ligne = .Range("A8:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Find(Day(Cell.Value))
                          
            'coloration
            .Cells(ligne.Row, colonne.Column).Resize(1, 4).Interior.color = RGB(191, 191, 191)
        End With
    End If
NextCell:
    Next Cell
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87