Comment afficher une feuille en VBA

Résolu/Fermé
JPIJQDAL35 - 22 févr. 2008 à 12:03
 JPIJQDAL35 - 22 févr. 2008 à 14:30
Bonjour,
A plus de 50 ans, découvrir Excel n'est pas chose facile...a fortiori le mode VBA
La barre est sans doute un peu haute mais je tente l'essai quand même.
Mon cas:
Dans un classeur, j'ai créé plusieurs feuilles.
Dans l'une d'elle (Feuille1), j'ai une cellule (D19) dans laquelle suivant la condition implicitée dans une formule (RechercheV) j'obtiens une valeur (Valeur1,Valeur2,Valeur3).
Dans le même classeur, j'ai créé, entre autres, 3 feuilles (Feuille5 ,Feuille6 ,Feuille7) reprenant un ensemble d'informations propres à chacune de ces valeurs.
A partir de la donnée obtenue dans la cellule D19 de la feuille1 j'aimerais afficher ("à la demande" ) la feuille (Feuille5 ou Feuille6 ou Feuille7 préalablement masquée) relative à cette valeur.
Pensant qu'en VBA, les conditions fonctionnaient classiquement (=Si(D19="Valeur1";Feuille5;si(.......), J'ai essayé ce qui suit mais ça ne marche pas, ça me renvoi toujours la feuille7 (quelque soit la valeur de D19). C'était trop simple (celà doit l'être mais pas pour moi) compris).
Merci de m'aider dans ce terrible apprentissage.

Sub afficher_détails
' if range(D19).value = ("Valeur1")
Sheets("Feuille5").Select
Range("A1").Select
End

' if range(D19).value = ("valeur2") then
Sheets("Feuille6").Select
Range("A1").Select
End

' if range(D19).value = ("Valeur3") then
Sheets("Feuille7").Select
Range("A1").Select
End

End Sub

2 réponses

Utilisateur anonyme
22 févr. 2008 à 14:20
Bonjour,

Quelques observations ...

Je vous recommande d'éviter d'utiliser les accents de la langue dans les noms d'objets

Sub afficher_détails() ->>> Sub Afficher_Details()

Dans le nom de vos objets, insérer quelques majuscules
Lors de la saisie, vous tapez en minuscule, et après le [ Enter ], les majuscules s'afficheront
automatiquement, ce qui confirme la syntaxe du mot !

Votre structure de IF est linéaire, vous pourriez utiliser une structure [ Select Case ]

exemple type :

Sub Afficher_Details()

    Select Case (Range("D19").Value)
        Case "Valeur1": AfficheFeuille ("Feuil5") ' Soyez vigilent sur le nom des feuilles
        Case "Valeur2": AfficheFeuille ("Feuil6") ' Est vraiment [ Feuille5 ], le nom standard
        Case "Valeur3": AfficheFeuille ("Feuil7") ' devrait être [ Feuil5 ], et ainsi de suite ...
    End Select

End Sub
'

Function AfficheFeuille(ByVal LaFle As String)
    Sheets(LaFle).Visible = True ' Si la feuille est masqué, vous devez la rendre visible
    Sheets(LaFle).Select           ' avant de la sélectionner
End Function
'


Si vous recherchez des exemples de code, je vous recommande mon classeur
VizioXLA que vous trouverez sur excel-download à cette adresse :

https://www.excel-downloads.com/resources/categories/utilitaires.18/

repérer VizioXLA

sans prétention, ce classeur démontre comment utiliser les objets Excels.

Lupin
3
Merci pour les précieux conseils qui me serviront sans aucun doute.
Je vais essayer également d'appliquer cette syntaxe en y ajoutant l'affichage de la feuille. (Ce que j'avais effectivement oublié).
Il y a 8 jours encore, je ne savais pas ce qu'était une macro, c'est dire ce qu'il reste à faire...

Cordialement


GB
0