Modifier code VBA

cj welch

XLDnaute Occasionnel
Bonsoir le forum,

j'ai la formule suivante qui fonctionne avec un bouton :

Private Sub Command_pj_Click()
If Not Sheets("Prix").Visible = True Then
Sheets("Prix").Visible = True
MAJControle
Worksheets("Prix").Unprotect
With Sheets("Prix")
.Range("A15:A43").AutoFilter
.Range("$A$15:$A$44").AutoFilter Field:=1, Criteria1:="<>"
End With
Worksheets("Prix").Protect
Exit Sub

Else
MsgBox ("Vous devez d'abord relancer le calcul des factures ")
End If

End Sub

Je voudrais rajouter 2 feuilles, une appelé "remise" et l'autre "escompte" a ce code. J' ai essaié
Sheets(Array("Prix", "remise", "escompte")).Select
puis sans le Array,
mais malheureusement cela ne fonctionne pas.

pouviez m'aider a modifier le code ?

Merci de votre aide
 

Roland_M

XLDnaute Barbatruc
Re : Modifier code VBA

bonsoir

tu peux t'inspirer de ce modèle

Code:
' ceci pour toi faire un essai pour voir comment appeler et créer si nécessaire !?
Sub Essai()
CreationFeuil "Prix"
End Sub
' la macro qui crée la feuille si elle n'existe pas
Sub CreationFeuil(F$)
TestOk = 0
For I = 1 To ThisWorkbook.Sheets.Count
 If Sheets(I).Name = F$ Then TestOk = 1: Exit For
Next
If TestOk = 0 Then Sheets.Add: ActiveSheet.Name = F$
End Sub
 

Papou-net

XLDnaute Barbatruc
Re : Modifier code VBA

Bonsoir cj weclh, Roland,

Ton code avec array est correct, cj welch : il devrait fonctionner.
Est-ce que la syntaxe des feuilles est correcte, est-ce que ces feuilles ne sont pas masquées, ...?

En tout cas, le code de Roland devrait marcher.

Cordialement.
 

cj welch

XLDnaute Occasionnel
Re : Modifier code VBA

salut Papou net, roland

Le bouton qui fonctionne avec ce code affiche et masque les feuilles en fonction des onglets du classeur. le code de roland ,qui doit fonctionner, ne me convient pas car je doit effectuer des calculs a partir d'une autre macro

concernant mon code, j'ai un message d'erreur qui dit "impossible de lire la propriété visible de la classe sheets"

A+
 

Roland_M

XLDnaute Barbatruc
Re : Modifier code VBA

re:

citation:
concernant mon code, j'ai un message d'erreur qui dit "impossible de lire la propriété visible de la classe sheets"

c'est normal si ta feuille n'existe pas !

tu dois mettre un on error resume next avant
et puis tu test Err aussitôt
if Err then sheets.add:activesheet.name="nom de ta feuille"

un exemple à paufiner bien sûr !
 

cj welch

XLDnaute Occasionnel
Re : Modifier code VBA

bonsoir jean pierre,

ue petite précision, les feuilles ne sont pas a créer, elles sont déja existantent. le but est de les masquer ou de les afficher en fonction de l'affichage ou non des dits feuilles dans le classeur.
Si les feuilles prix, escompte, remise sont affichées, le message apparait (msgbox)
si elles sont masquées, elles s'affiches.

Cordialement
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Modifier code VBA

Bonsoir le fil, bonsoir le forum,

Peut-être comme ça :
Code:
Private Sub Command_pj_Click()
Dim sh As Worksheet
 
For Each sh In Sheets
    Select Case sh.Name
        Case "prix", "remise", "escompte"
            If Not sh.Visible = True Then
                sh.Visible = True
                MAJControle
                sh.Unprotect
                With sh
                .Range("A15:A43").AutoFilter
                .Range("$A$15:$A$44").AutoFilter Field:=1, Criteria1:="<>"
                End With
                sh.Protect
                Exit Sub
 
            Else
                MsgBox ("Vous devez d'abord relancer le calcul des factures ")
            End If
    End Select
Next sh
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Modifier code VBA

Bonsoir le fil, bonsoir le forum,

J'ai juste nommé trois onglets avec les noms que tu donnes et les ai laissé visibles. J'ai cliqué sur le bouton et j'ai eu trois fois le message. Donc le code fontionne en partie... Mais si tu t'obstines à ne pas mettre en pièce jointe un fichier exemple basé sur ton fichier réel il sera difficile de t'aider plus que ça...
 

Statistiques des forums

Discussions
312 292
Messages
2 086 856
Membres
103 401
dernier inscrit
sibfil