Comparer la cellule 1 d'une plage avec autre plage Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
C
ClaireD
Membre habitué
Membre habitué
Messages : 72
Inscrit le : 4 mars 2014
Version d'Excel : 2010 fr

Message par ClaireD » 5 mars 2014, 15:21

Bonjour H2so4,

Cela fonctionne à merveille. Un gros merci.

Je la comprends assez bien mais je me demande ou vous avez défini les variables wsr et wsv. Je ne vois aucune indication de set pour ces variables, donc aucune nécessité de les déclarer. Mais comment le système les interprète ?

Merci
Claire
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'151
Appréciations reçues : 376
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 5 mars 2014, 15:35

Bonjour,

j'ai la très mauvaise habitude de ne pas déclarer mes variables si ce n'est pas nécessaire. Je laisse VBA déterminer lui-même le type de variable en fonction du contexte.

voici quelques commentaires dans le code.
Sub creesynthèse()
   ' on supprime la feuille synthèse si elle existe
    On Error Resume Next
    Application.DisplayAlerts = False
    Worksheets("Synthèse").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True

' wss fait référence à la feuille synthèse
' on ajoute une feuille
    Set wss = Worksheets.Add
' on la nomme synthèse
    wss.Name = "Synthèse"
 ' titres de colonnes
    wss.Cells(1, 1) = "période"
    wss.Cells(1, 2) = "R"
    wss.Cells(1, 3) = "V"
    wss.Cells(1, 4) = "résultat"
    l = 1 : "numéro de ligne sur wss
 ' on parcourt toutes les feuilles, wsR référence la feuille en cours 
    For Each wsr In Worksheets
        With wsr
            If Right(.Name, 1) = "R" Then ' on sélectionne uniquement les feuilles se terminant par R
                Set wsv = Worksheets(Left(.Name, Len(.Name) - 1) & "V") ' wsv fait référence à la feuille V du même groupe
                j = 3  'numéro de première ligne  à considérer sur wsR
                For Each C In Array("B9", "B16", "B23", "B30", "B37", "G9", "G16") ' cellules qui nous intéressent sur wsV (total du jour)
                    l = l + 1
                    j = j + 1
                    wss.Cells(l, 1) = Left(.Name, Len(.Name) - 1) & " " & .Range("A" & j) ' nom du groupe + jour de la semaine
                    wss.Cells(l, 3) = wsv.Range(C) ' total du jour sur wsV
                    wss.Cells(l, 2) = .Range("K" & j) ' total du jour sur wsR
                    wss.Cells(l, 4) = wss.Cells(l, 2) - wss.Cells(l, 3) ' différence entre les 2 totaux
                Next
            End If
        End With
    Next
    wss.Columns("A:D").AutoFit
    Set wss = Nothing
    Set wsv = Nothing
    Set wsr = Nothing
End Sub
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message