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

judoka0209

XLDnaute Occasionnel

je prefererai mettre
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")

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

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

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

Next
End With
End Sub

mais ca marche pas, ca me met une erreur de compilation" next sans for"
c'est pour cela que j'ai essayer autre chose
merci
 

Staple1600

XLDnaute Barbatruc
Re judoka, job75

@judoka0209
Avec un Select Case, tu vas réécrire 12 fois (pour les 12 mois) la même partie de ton code
C'est pour éviter cela, que j'avais abandonné la voie du Select Case

 

judoka0209

XLDnaute Occasionnel
Re judoka, job75

@judoka0209
Avec un Select Case, tu vas réécrire 12 fois (pour les 12 mois) la même partie de ton code
C'est pour éviter cela, que j'avais abandonné la voie du Select Case
non je veux pas qu'il me fasse les mois mais qu'il me mette 6 dans le vendredi, samedi et dimanche de la ligne 13
si je met qu'un IF ca fonctionne bien mais avec les 2 autres ca marche pas
 

job75

XLDnaute Barbatruc
Re,
non je veux pas qu'il me fasse les mois mais qu'il me mette 6 dans le vendredi, samedi et dimanche de la ligne 13
Eh oui, il suffisait de le dire (et surtout de ne pas le faire !!!) :
Code:
Sub Test()
Dim plageA As Range, plageB As Range, c As Range, mois As String
Set plageA = Sheets("ep").Range("D10:BC10")
Set plageB = Sheets("ep").Range("D5:BC5")
With Application
    .ScreenUpdating = False
    Range("C13:NC13").ClearContents
    If .CountIf(plageA, "A") = 0 Then Exit Sub
    For Each c In Range("C13:NC13")
        If Weekday(c.Offset(-10), 2) > 4 Then 'vendredi, samedi, dimanche
            mois = MonthName(Month(c.Offset(-10)))
            If .CountIf(Range("C1:NC1"), mois) * .CountIf(plageB, mois) * .CountIf(c.Offset(-7), "A") Then c = 6
        End If
    Next
End With
End Sub
A+
 

Pièces jointes

  • Planning equipe 3x8 2018(1).xlsm
    65.7 KB · Affichages: 10

judoka0209

XLDnaute Occasionnel
super mais j'ai deja du mal a comprendre la premiere formule la tu m'as tout changé, il y aurait il pas une facon de rester dans la meme formule
pour vendredi
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

pour samedi
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

et pour dimanche
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

en gardant la meme structure meme si ca alourdi le programme pour moi c'est plus simple à modifier
merci
 

job75

XLDnaute Barbatruc
Re,

Maintenant si vous voulez mettre "en dur" la liste des jours pas de problème :
Code:
Sub Test()
Dim plageA As Range, plageB As Range, jour, c As Range, mois As String
Set plageA = Sheets("ep").Range("D10:BC10")
Set plageB = Sheets("ep").Range("D5:BC5")
jour = Array("ven", "sam", "dim") 'liste à adapter
With Application
    .ScreenUpdating = False
    Range("C13:NC13").ClearContents
    If .CountIf(plageA, "A") = 0 Then Exit Sub
    For Each c In Range("C13:NC13")
        If IsNumeric(.Match(c.Offset(-11), jour, 0)) Then
            mois = MonthName(Month(c.Offset(-10)))
            If .CountIf(Range("C1:NC1"), mois) * .CountIf(plageB, mois) * .CountIf(c.Offset(-7), "A") Then c = 6
        End If
    Next
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Planning equipe 3x8 2018(2).xlsm
    68.5 KB · Affichages: 12

judoka0209

XLDnaute Occasionnel

ca marche pas je t'ai remis le fichier avec ta macro
 

Pièces jointes

  • Planning equipe 3x8 2018(2).xlsm
    61.6 KB · Affichages: 16

job75

XLDnaute Barbatruc
Re,

Au lieu de rester les bras croisés secouez-vous un peu.

Regardez le fichier du post #24 (c'est celui du post #1) : la ligne des "A" c'est la ligne 6.

Alors que dans votre (nouveau) fichier du post #25 la ligne des "A" c'est la ligne 5...

Je vous laisse adapter la macro en conséquence, cela prend une demi-seconde.

Et l'on verra ainsi si l'aide qu'on vous apporte sert à quelque chose ou si vous êtes indécrottable.

A+
 

judoka0209

XLDnaute Occasionnel
j'ai bien regarde la ligne des "A" c'est la ligne 5
 

judoka0209

XLDnaute Occasionnel
re bonjour,
je viens de m'apercevoir d'un soucis
le tableau à un peu change mais le probleme est qu'il me met bien un 6 dans les cases sous N, mais ne prend pas en compte le fait qu'il n'y a pas de A dans la plage F7:BC7, il met N meme si la case en vide

Sub ep()
'equipe A
Dim plageA As Range, plageB As Range, jour, c As Range, mois As String
Set plageA = Sheets("ep").Range("f7:BC7")
Set plageB = Sheets("ep").Range("f5:BC5")
jour = Array("ven", "sam", "dim") 'liste à adapter
With Application
.ScreenUpdating = False
Range("C13:NC13").ClearContents
If .CountIf(plageA, "A") = 0 Then Exit Sub
For Each c In Range("C13:NC13")
If IsNumeric(.Match(c.Offset(-11), jour, 0)) Then
mois = MonthName(Month(c.Offset(-10)))
If .CountIf(Range("C1:NC1"), mois) * .CountIf(plageB, mois) * .CountIf(c.Offset(-8), "N") Then c = 6
End If
Next
End With
End Sub
 

Discussions similaires

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