Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

probleme variable bloc

judoka0209

XLDnaute Occasionnel
bonjour, staple 1600 ma enormement aidé sur ma macro
j'ai un autre probleme sur une autre partie de ma macro j'ai une erreur de bloc

Sub Test_II()
Dim plageA As Range, plageB As Range, c As Range
Set plageA = Sheets("ep").Range("$D$7:$BC$7")
Set plageB = Sheets("ep").Range("$D$5:$BC$5")
With Application
.ScreenUpdating = False
For Each c In Range("C5:NC5")

If .CountIf(plageA, "a") * .CountIf(c.Offset(-3), "jeu") * .CountIf(Range("c1:nc31"), MonthName(Month(c.Offset(-2)))) * _
.CountIf(plageB, MonthName(Month(c.Offset(-2)))) * .CountIf(c.Offset(1), "a") Then

c = 6
End If
Next
End With

Range("C8:NC8").Select
Selection.ClearContents
Dim plage1 As Range, plage2 As Range, d As Range
Set plage1 = Sheets("ep").Range("$D$10:$BC$10")
Set plage2 = Sheets("ep").Range("$D$5:$BC$5")
With Application
.ScreenUpdating = False
For Each d In Range("C8:NC8")

If .CountIf(plage1, "b") * .CountIf(c.Offset(-6), "mar") * .CountIf(Range("c1:nc31"), MonthName(Month(c.Offset(-5)))) * _
.CountIf(plage2, MonthName(Month(c.Offset(-2)))) * .CountIf(c.Offset(1), "a") Then
c = 6
End If
Next
End With
End Sub
merci
 

Pièces jointes

  • Planning equipe 3x8 201821.xlsm
    66 KB · Affichages: 33

Lone-wolf

XLDnaute Barbatruc
Bonsoir judoka, Jean Marie, le Forum

Fait une sauvegarde du classeur, puis fait un test avec ceci

VB:
Sub Test_II()
Dim plageA As Range, plageB As Range, c As Range
Dim plage1 As Range, plage2 As Range, d As Range
Dim a, b, g, h, e, f, i, j, k, l

    Application.ScreenUpdating = False
    Set plageA = Sheets("ep").Range("D7:BC7")
    Set plageB = Sheets("ep").Range("D5:BC5")
    Set plage1 = Sheets("ep").Range("D10:BC10")
    Set plage2 = Sheets("ep").Range("D5:BC5")

    On Error Resume Next
    a = WorksheetFunction.CountIf(plageA, "a")

    With Feuil1
        For Each c In .Range("C5:NC5")
            b = WorksheetFunction.CountIf(c.Offset(-3), "jeu")
            g = WorksheetFunction.CountIf(Range("c1:nc31"), MonthName(Month(c.Offset(-2))))
            h = WorksheetFunction.CountIf(plageB, MonthName(Month(c.Offset(-2))))
            e = WorksheetFunction.CountIf(c.Offset(1), "a")
        Next
        If a * b * g * h * e Then c = 6
        .Range("C8:NC8").ClearContents

        f = WorksheetFunction.CountIf(plage1, "a")

        For Each d In .Range("C8:NC8")
            i = WorksheetFunction.CountIf(d.Offset(-6), "jeu")
            j = WorksheetFunction.CountIf(Range("c1:nc31"), MonthName(Month(d.Offset(-5))))
            k = WorksheetFunction.CountIf(plage2, MonthName(Month(d.Offset(-2))))
            l = WorksheetFunction.CountIf(d.Offset(1), "a")
            If f * i * j * k * l Then d = 6
        Next
    End With
End Sub
 

job75

XLDnaute Barbatruc
Bonjour judoka0209, JM, Lone-wolf,

Déjà si vous voulez que le bouton "gestion" serve à quelque chose il faut cette macro dans la 1ère feuille :
Code:
Private Sub CommandButton2_Click()
Test_II
End Sub
Ensuite pour que la 2ème boucle de la macro Test_II fonctionne il faut la corriger ainsi :
Code:
    For Each c In Range("C8:NC8")
    If .CountIf(plage1, "a") * .CountIf(c.Offset(-6), "jeu") * .CountIf(Range("c1:nc31"), MonthName(Month(c.Offset(-5)))) * _
        .CountIf(plage2, MonthName(Month(c.Offset(-5)))) * .CountIf(c.Offset(1), "a") Then
    c = 6
    End If
    Next
Je n'ai pas essayé de savoir quelle est l'utilité de cette macro...

A+
 

judoka0209

XLDnaute Occasionnel
bonjour lone wolf je viens d'essayer ta macro j'ai ete obligé de la modifier un peu pour la ligne c8:bc8 par contre pour la ligne c5:bc5 ca marche pas
tu peux voir pourquoi
je remet le fichier avec ta macro
merci

Sub Test_II()
Dim plageA As Range, plageB As Range, c As Range
Dim plage1 As Range, plage2 As Range, d As Range
Dim a, b, g, h, e, f, i, j, k, l

Application.ScreenUpdating = False
Set plageA = Sheets("ep").Range("D7:BC7")
Set plageB = Sheets("ep").Range("D5:BC5")
Set plage1 = Sheets("ep").Range("D10:BC10")
Set plage2 = Sheets("ep").Range("D5:BC5")

On Error Resume Next
a = WorksheetFunction.CountIf(plageA, "a")

With Feuil1
For Each c In .Range("C5:NC5")
b = WorksheetFunction.CountIf(c.Offset(-3), "jeu")
g = WorksheetFunction.CountIf(Range("c1:nc31"), MonthName(Month(c.Offset(-2))))
h = WorksheetFunction.CountIf(plageB, MonthName(Month(c.Offset(-2))))
e = WorksheetFunction.CountIf(c.Offset(1), "a")
Next
If a * b * g * h * e Then c = 6
.Range("C8:NC8").ClearContents

f = WorksheetFunction.CountIf(plage1, "a")

For Each d In .Range("C8:NC8")
i = WorksheetFunction.CountIf(d.Offset(-6), "jeu")
j = WorksheetFunction.CountIf(Range("c1:nc31"), MonthName(Month(d.Offset(-5))))
k = WorksheetFunction.CountIf(plage2, MonthName(Month(d.Offset(-5))))
l = WorksheetFunction.CountIf(d.Offset(1), "a")
If f * i * j * k * l Then d = 6
Next
End With
End Sub
 

Pièces jointes

  • Planning equipe 3x8 201821.xlsm
    55.9 KB · Affichages: 17

judoka0209

XLDnaute Occasionnel
Bonsoir Lone-Wolf

@Lone-wolf
Avant de lire de message#4, il serait logique que le demandeur lise le message#2
(voir pour cela le message#7)
bonjour et merci du temps que tu passe ca marche nockel
le bouton gestion je l'ai retiré volontairement il sert a rien sur ce planning
encore merci
 

judoka0209

XLDnaute Occasionnel
comment mettre plusieurs case dans cette formule mes cases ne marche pas
Sub Test()
Range("C13:NC13").Select
Selection.ClearContents
Dim plageA As Range, plageB As Range, c As Range
Set plageA = Sheets("ep").Range("$D$10:$BC$10")
Set plageB = Sheets("ep").Range("$D$5:$BC$5")
With Application
.ScreenUpdating = False

For Each c In Range("C13:NC13")
Select Case Month(c.Offset(-10))
Case 1
If .CountIf(plageA, "a") * .CountIf(c.Offset(-11), "ven") * .CountIf(Range("c1:nc1"), MonthName(Month(c.Offset(-10)))) * _
.CountIf(plageB, MonthName(Month(c.Offset(-10)))) * .CountIf(c.Offset(-8), "a") Then
c = 6
Case 2
If .CountIf(plageA, "a") * .CountIf(c.Offset(-11), "sam") * .CountIf(Range("c1:nc1"), MonthName(Month(c.Offset(-10)))) * _
.CountIf(plageB, MonthName(Month(c.Offset(-10)))) * .CountIf(c.Offset(-8), "a") Then
c = 6
Case 3
If .CountIf(plageA, "a") * .CountIf(c.Offset(-11), "dim") * .CountIf(Range("c1:nc1"), MonthName(Month(c.Offset(-10)))) * _
.CountIf(plageB, MonthName(Month(c.Offset(-10)))) * .CountIf(c.Offset(-8), "a") Then
c = 6


End If
End Select
Next
End With
End Sub

merci
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@judoka0209
???
Pourquoi tu repars sur le Select Case alors qu'aprés avoir suggéré son emploi, j'y ai renoncé (pour allégér le code) en utilisant
MonthName et Month et Offset?

Quant à la syntaxe du Select Case, je t'ai expliqué où trouver son mode d'utilisation et KVL t'a également donné des explications et fourni un exemple complet (mais ça c'était dans ton autre fil..; d'où l'intérêt ne pas multiplier les fils )

EDITION: Bonjour job75
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour à tous,

Ceci se confirme :
Au train où ça va je ne vois pas comment vous pourrez terminer votre projet.
- il manque 2 End If

- remplacer Offset(-8) par Offset(-7)

Pas de résultat en février car pas de "A" en ligne 6 pour les samedis.

Pas de résultat en mars car pas de "A" en ligne 6 pour les dimanches.
 

Discussions similaires

Réponses
11
Affichages
297
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…