Comment afficher une feuille en VBA

Résolu
JPIJQDAL35 -  
 JPIJQDAL35 -
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
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. Utilisateur anonyme
     
    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
    1. JPIJQDAL35
       
      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