Posez votre question Signaler

Comment afficher une feuille en VBA [Résolu]

JPIJQDAL35 - Dernière réponse le 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
Lire la suite 
Réponse
+1
moins plus
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 :

http://www.excel-downloads.com/...

repérer VizioXLA

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

Lupin
JPIJQDAL35- 22 févr. 2008 à 14:30
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
Répondre
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+0
moins plus
Bonjour,

Pourquoi l'apostrophe devant chaque If ??? L'apostrophe sert à mettre des commentaires (partie non exécutée en tant que code).
Il n'y a donc ici aucune condition et donc le code s'exécute ligne par ligne ...

Sub afficher_détails()

     If Worksheets("Feuil1").Range(D19).Value = ("Valeur1") 
          Sheets("Feuille5").Select 
          Range("A1").Select 
     End If

     If Worksheets("Feuil1").Range(D19).Value = ("valeur2") then 
          Sheets("Feuille6").Select 
          Range("A1").Select 
     End  If

     If Worksheets("Feuil1").Range(D19).Value = ("Valeur3") then 
          Sheets("Feuille7").Select 
          Range("A1").Select 
      End If

End Sub


Comme ça, ça devrait aller mieux.

;o)

polux
JPIJQDAL35- 22 févr. 2008 à 13:54
Bonjour Polux,
Tout d'abord merci pour cette prompte réponse.
Cependant, après avoir scrupuleusement respecté (sauf erreur que je n'arrive pas à voir) j'ai toujours un message d'erreur. "Erreur de syntaxe".
Celà ne proviendrait il pas du fait que la cellule D19 de la Feuille1 soit le résultat d'une formule (RechercheV) et non d'une saisie directe ?

Encore merci.
Répondre
JPIJQDAL35- 22 févr. 2008 à 14:19
Polux 31
J'ai trouvé, en fait dans ta réponse il manquait then à la 1ère ligne.
En tout cas merci...tout celà me permet d'apprendre


Sub Accès_détails_secteur()
'
' Accès_détails_secteur Macro
' Macro enregistrée le 22/02/2008 par
'

If Range("D19").Value = "Valeur1" Then
Sheets("Feuille5").Select
Range("A1").Select
End If

If Range("D19").Value = "Valeur2" Then
Sheets("Feuille6").Select
Range("A1").Select
End If

If Range("D19").Value = "Valeur3" Then
Sheets("Feuille7").Select
Range("A1").Select
End If

End Sub


J'aurai sans doute encore beaucoup de questions à poser du style

Cordialement

GB
Répondre
Ajouter un commentaire
Annonces
 
moins plus
Ce document intitulé «  Comment afficher une feuille en VBA  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.