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

probleme de macro dans worksheet

  • Initiateur de la discussion Initiateur de la discussion alexb77
  • Date de début Date de début

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 !

A

alexb77

Guest
bonjour à tous,
j'ai cette macro qui me colorie les lignes de mes feuilles lorsque je coche ou décoche une ligne.


Private Sub Worksheet_Calculate()
Dim i As Integer

Range("A1").Select
For i = 7 To 40
If Cells(i, 1) = "Vrai" Then
Range("$C$" & i & ":$Z$" & i).Interior.ColorIndex = 36
Else
Range("$C$" & i & ":$Z$" & i).Interior.ColorIndex = 0

End If

Next
End Sub



le problème est que si je l'a place dans thisworbook_calculate :ce sont toutes les feuilles qui execute la macro.
et si je l'a place dans worksheet_calculate, cela fonctionne que sur une feuille mais pas les autres alors que j'ai fait la même opération dans les 4 feuilles necessaires.

merci
alex
 
Re : probleme de macro dans worksheet

Bonjour Alexb77,
je crois que la solution serait de mettre votre code dans un module et de lui préciser sur quel onglet vous souhaitez effectuer l'action.

Code:
Sub test()
Dim i As Integer

Sheets("VotreOnglet").Select
'Votre condition

Ou encore faire une boucle regroupant les onglets que vous souhaitez couvrir.
Par exemple :

Code:
'Pour couvrir les onglets 4 jusqu'à la fin 
For Onglet = 4 to sheets.count
Sheets(Onglet).Select
'Votre code

En espérant que cela réponde à votre question.

Cordialement,

Étienne
 
Re : probleme de macro dans worksheet

Bonjour Alex, Etienne, bonjour le forum,

Autre proposition (non testée) en gardant le code sur le composant ThisWorkbook et en utilisant un Select Case...

Code:
Private Sub Workbook_SheetCalculate(ByVal sh As Object)
Dim i As Integer 'déclare la variable i
 
Select Case sh.Name 'action selon le nom de l'onglet
Case "Feuil1", "Feuil2", "Feuil3", "Feuil4" '(à adapter à ton cas...)
    With ActiveSheet 'prend en compte l'onglet actif
        .Range("A1").Select 'sélectionne la cellule A1
        'boucle pour colorer les cellules
        For i = 7 To 40
            If .Cells(i, 1) = "Vrai" Then
                .Range("$C$" & i & ":$Z$" & i).Interior.ColorIndex = 36
            Else
                .Range("$C$" & i & ":$Z$" & i).Interior.ColorIndex = 0
            End If
        Next 'prochaine cellule de la boucle
    End With 'fin de la prise en compte de l'onglet actif
End Select 'fin de l'action selon le nom de l'onglet
 
End Sub
 
Dernière édition:
Re : probleme de macro dans worksheet

merci etienne,
je vais essayer cela, mais je pensait que c'était un probleme de activesheet car une mode worksheet_double click, ca marche.
merci
alex
 
Re : probleme de macro dans worksheet

Bonjour Alex,
je crois que la solution la plus appropriée est vraiment celle de Robert. Le select case est vraiment l'option la plus polyvalente selon moi.

Bonne journée !

Étienne

Salutations Robert !
 
Re : probleme de macro dans worksheet

merci robert re etienne,
ton code dans workbook ne fonctionne que pour le premier onglet.
c'est toujours et seulement le premier onglet qui fonctionne automatiquement, les autres fonctionnent en manuel avec le double click, en lancant la macro mais pas en immediat.
le problème ne viendrait il pas de la feuille active
 
Re : probleme de macro dans worksheet

Re Alex,
essayez quelque chose comme ceci dans un module:

Code:
Sub test()
Dim i As Integer 'déclare la variable i
Dim Sh As Object
 
For Each Sh In Sheets
    'Le bout de code à Robert
    Select Case Sh.Name
    Case "Feuil1", "Feuil2", "Feuil3", "Feuil4"
    
        With ActiveSheet 'prend en compte l'onglet actif
        .Range("A1").Select 'sélectionne la cellule A1
        'boucle pour colorer les cellules
            For i = 7 To 40
                If .Cells(i, 1) = "Vrai" Then
                    .Range("$C$" & i & ":$Z$" & i).Interior.ColorIndex = 36
                Else
                    .Range("$C$" & i & ":$Z$" & i).Interior.ColorIndex = 0
                End If
            Next 'prochaine cellule de la boucle
        End With 'fin de la prise en compte de l'onglet actif
    End Select 'fin de l'action selon le nom de l'onglet
Next Sh 'Prochaine Feuille
 
End Sub

Cordialement,
Étienne
 
Re : probleme de macro dans worksheet

le soucis est que cela marche mais dans un module, je dois la déclenchée et dans thisworkbook, même en selectionnant les feuilles souhaitées cela affecte toutes les autres feuilles.
 
Re : probleme de macro dans worksheet

bonsoir a tous

En supposant que j'aie compris:

une adaptation de la macro de Robert

Code:
Private Sub Workbook_SheetCalculate(ByVal sh As Object)
Dim i As Integer 'déclare la variable i
tablo = Array("Feuil1", "Feuil2", "Feuil3", "Feuil4") '(à adapter à ton cas...)
For n = LBound(tablo) To UBound(tablo)
With Sheets(tablo(n))
'boucle pour colorer les cellules
For i = 7 To 40
If .Cells(i, 1) = "Vrai" Then
.Range("$C$" & i & ":$Z$" & i).Interior.ColorIndex = 36
Else
.Range("$C$" & i & ":$Z$" & i).Interior.ColorIndex = 0
End If
Next 'prochaine cellule de la boucle
End With
Next n
End Sub
 
Re : probleme de macro dans worksheet

merci, merci à tous de vous etes penchés sur mon problème.
grand merci a pierrejean, tu es un dieu, je me prosterne à tes pieds (peut être pas quand même).
je n'ai pas trop compris le code :

tablo = Array("Feuil1", "Feuil2", "Feuil3", "Feuil4") '(à adapter à ton cas...)
For n = LBound(tablo) To UBound(tablo)
With Sheets(tablo(n))

je pense que c'est seulement pour selectionner les feuilles souhaitées.
en tout cas encore merci
amicalement alex🙂
 
Re : probleme de macro dans worksheet

Bonsoir le fil, bonsoir le forum,

Si si Alex tu peux te prosterner sans problème. On le fait tous devant Pierrejean... Que je salue au passage.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
927
Réponses
4
Affichages
742
Réponses
8
Affichages
797
Réponses
7
Affichages
457
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…