Macro qui coince et Case

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

WDAndCo

XLDnaute Impliqué
Bonsoir le Forum
Voici mon problème j'ai une Macro qui doit compter le nombre de "NC" sur toutes les pages sauf 2, bon sa marche mais quand même un petit problème de case.

Mon plus gros souci et de pouvoir compter les "NC" mais cette fois ci sur certaine page sous condition (Celle avec "Ok" en I4) et la sa coince. Si QQ peut me la décoincer, je l'en remercie d'avance

Sub Recape()
Sheets("Récap").Range("E7:E76").Select
Selection.ClearContents ' Efface les colonne et ligne qui vont etre utilisé
Sheets("Récap").Range("G7:G76").Select
Selection.ClearContents ' Efface les colonne et ligne qui vont etre utilisé
Application.ScreenUpdating = False
Dim Wb As Worksheet
For Each Wb In Worksheets
If Not Wb.Name = "Récap" Or Wb.Name = "Copie" Then Wb.Activate 'Ne dois pas prendre en compte Récap et Copie
If Sheets(Wb.Name).Range("I4") = "Ok" Then Wb.Activate 'Dois prendre en compte que les "Ok"
For L = 7 To 76
If Sheets(Wb.Name).Range("E" & L) = "NC" Then Sheets("Récap").Range("E" & L).Value = Sheets("Récap").Range("E" & L).Value + 1: Sheets("Récap").Range("G" & L).Value = Sheets("Récap").Range("G" & L).Value + Wb.Name + " - "
If Sheets(Wb.Name).Range("E" & L) = "nc" Then Sheets("Récap").Range("E" & L).Value = Sheets("Récap").Range("E" & L).Value + 1: Sheets("Récap").Range("G" & L).Value = Sheets("Récap").Range("G" & L).Value + Wb.Name + " - "
' "NC" ok , "nc" non sensible a la case
Next L
Next Wb
Application.ScreenUpdating = True
Sheets("Récap").Select
Range("G4").Select
End Sub

Dominique 🙂
 

Pièces jointes

Re : Macro qui coince et Case

Re,

Ton pb vient du fait que tu as protégé tes feuilles C2 et C1.
Solution :
1. Déprotège tes feuilles
2. Juste avant la "sub nouvelle feuille", mets --> Option Compare text
3. Remplace ta macro par celle-ci
Code:
Sub Recape()
Dim Wb As Worksheet
With Sheets("Récap")
    .Range("E7:E76").ClearContents  ' Efface les colonne et ligne qui vont etre utilisé
    .Range("G7:G76").ClearContents ' Efface les colonne et ligne qui vont etre utilisé
End With
Application.ScreenUpdating = False
For Each Wb In Worksheets
If Not Wb.Name = "Récap" Or Wb.Name = "Copie" Then Wb.Activate 'Ne dois pas prendre en compte Récap et Copie
If Sheets(Wb.Name).Range("I4") <> "Ok" Then Wb.Activate 'Dois prendre en compte que les "Ok"
For L = 7 To 76
If Sheets(Wb.Name).Range("E" & L) = "NC" Then Sheets("Récap").Range("E" & L).Value = Sheets("Récap").Range("E" & L).Value + 1: Sheets("Récap").Range("G" & L).Value = Sheets("Récap").Range("G" & L).Value + Wb.Name + " - "
' "NC" ok , "nc" non  sensible a la case
Next L
Next Wb
Application.ScreenUpdating = True
Sheets("Récap").Select
Range("G4").Select
End Sub
Bon travail
Amicalement
Dan

Edition : pour Stapple: curieux car c'est la première fois que cela arrive. Peut être le MAC qui a pas voulu. Lol !
 
Dernière édition:
Re : Macro qui coince et Case

Bonsoir Dan et Staple1600

Merci je n'ai plus le problème de case avec les NC ou nc.

Mais l'autre problème est toujours la.

Si sur la feuille Récap en G4 j'ai "" la Macro dois compter toutes les feuille C1, C2, C3 ........ Ect sur toutes ces feuilles j'ai "Ok" en I4

Par contre si Récap en G4 j'ai le nom d'un chantier la Macro ne dois compter que les feuille qui ont le même nom de chantier en G4 elles ont "Ok" en I4 et les autre "Non".
Actuellement la Macro compte toutes les feuilles dans l'un ou l'autre cas. La protection de feuille peut être enlevée est remise par Call pro et Call depro mais comme il faut rien écrire sur ces feuille ! ! Il faut juste lire en I4 qui n'est pas protégée. Mais je suis preneur de toute solution.
Avant Macro DeprO après Macro Pro dans la boucle de feuille WB.

Merci a vous.

Dominique 🙂
 

Pièces jointes

Re : Macro qui coince et Case

re,

essaye avec cette macro :
Code:
Sub Recape()
Dim Wb As Worksheet
Dim L as byte
With Sheets("Récap")
    .Range("E7:E76").ClearContents  ' Efface les colonne et ligne qui vont etre utilisé
    .Range("G7:G76").ClearContents ' Efface les colonne et ligne qui vont etre utilisé
End With
Application.ScreenUpdating = False
For Each Wb In Worksheets
If Not Wb.Name = "Récap" And Not Wb.Name = "Copie" Then
Wb.Activate
If Sheets(Wb.Name).Range("I4") = "Ok" Then 'Dois prendre en compte que les "Ok"
For L = 7 To 76
If Sheets(Wb.Name).Range("E" & L) = "NC" Then Sheets("Récap").Range("E" & L).Value = Sheets("Récap").Range("E" & L).Value + 1: Sheets("Récap").Range("G" & L).Value = Sheets("Récap").Range("G" & L).Value + Wb.Name + " - "
' "NC" ok , "nc" non  sensible a la case
Next L
End If
End If
Next Wb
Application.ScreenUpdating = True
Sheets("Récap").Select
Range("G4").Select
End Sub

L'instruction "Option compare text" doit rester bien sûr
A te lire
Dan
 
Re : Macro qui coince et Case

re,

Explications :
1. If Not Wb.Name = "Récap" And Not Wb.Name = "Copie" Then
Wb.Activate

L'instruction "wb.activate" est placée en dessous de l'instruction IF au lieu d'être mise après le THEN.

2. If Sheets(Wb.Name).Range("I4") = "Ok" Then

On supprime le "wb.activate" placée après le THEN

3. On rajoute deux "END IF" après l'instruction NEXT L

Bonne soirée
Dan
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
176
Réponses
4
Affichages
754
Réponses
4
Affichages
625
Réponses
10
Affichages
1 K
Réponses
7
Affichages
367
Réponses
2
Affichages
589
Retour