[déplacé VB6 -> VBA] Selection de feuille excel avec une macro [Résolu]

Messages postés
6
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
4 février 2010
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 4 févr. 2010 à 12:50
Bonjour,

je debute en VB , mon probleme est le suivant :

je voudrais selectionner une feuille de classeur excel a partir d'une cellule dans laquelle on rentre le nom de la feuille.

je ne sais pas si je suis tres clair, en gros par exemple:

mes feuilles sont 6012,6013,6014 et...

en saisissant dans une cellule le n°6013 et en cliquant sur un bouton je veux me rendre à la feuille 6013 et je veux pouvoir le faire pour n'importe quelle feuille

j'ai commencé à ecrire un algorithme
B8 étant la cellule de saisie


if range("B8")=6013 then
sheets("6013").select
end if

ca marche pour cette feuille , mais moi je veux pour n'importe quel n°

Pouvez vous m'aider?
Peut on integrer une variable et la selectionner? en tant que feuille

merci
Afficher la suite 

14 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
Bonjour,
1) développant sous VBA et non sous VB.Net, tu aurais dû (important) ouvrir cette discussion dans le thème VBA !
2) ta syntaxe est simple :
sheets(range("B8").text).select


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
POuvre ton aide en lkigne sur l'objet WorkBook
Lis !
Il y a de surcroît un exemple on ne peut plus clair

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Et surtout : lorsque l'on développe une application, c'est d'abord à l'intention de l'utilisateur (à qui on doit s'efforcer de simplifier la vie) !
Ainsi (selon ce principe sacro-saint) : on le lui demande pas de renseigner une cellule puis de cliquer sur un bouton ! (ce serait d'ailleurs moins compliqué de cliquer simplement sur l'onglet souhaité dans le bandeau des onglets !) ===>> on lui propose une liste de choix toute faite et l'utilisateur clique sur son chois, tout simplement .


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
4 février 2010
0
Merci
merci pour la reponse
c'est ce que je vouolais nickel

Autre question je rallonge mon problème,
au lieu de saisir le numéro de feuille j'ai prévu une liste de choix ça c'est bon .

par contre mon problème c'est que je choisi le numéro de feuille dans un classeur mais c'est pour ouvrir la feuille dans un autre , je pense que ce doit être possible

mes lignes de commandes donnent ceci :

sheets(range("B8").Text).select

mais B8 est dans le premier classeur alors que la feuille est dans le deuxième, peut on préciser le nom du classeur ou se trouve la cellule B8 ? car lorsque ma ligne de comande arrive je suis deja dans le deuxieme classeur.

merci
Commenter la réponse de charlotte26mai
Messages postés
6
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
4 février 2010
0
Merci
Rebonjour,

je crois que vous n'avez pas compris ma requete ou alors je ne trouve pas , trop evident apparement.

je veux garder la valeur de ma cellule b8 du premier classeur mais comme je bascule dans le deuxieme la cellule B8 n'a plus de valeur

alors svp dites moi comment faire ?

tel que:

-je suis dans le 1er classeur ou est saisi B8
-je bascule dans le 2ème
-sheets(range("B8").Text).select
et la, ca ne marche pas car ca va rechercher la valeur de B8 dans le 2éme

merci
Commenter la réponse de charlotte26mai
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
0
Merci
Il te suffit de préciser le nom de la feuille lorsque tu t'adresse au Range :
If Sheets("ma feuille 1").Range("B8") = 6013 Then 
    Sheets("6013").Select 
End If 
(à vérifier)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
S'agissant de classeurs différents :
Je t'avais invité à ouvrir ton aide en ligne sur l'objet WokBook et à lire l'exemple qui accompagne cette rubrique de ton aide.
Tu y aurais découvert l'utilisation de la collection WorkBooks.
Tu n'en as apparemment rien fait, puisque je ne vois rien, dans ton code, qui permet de pointer vers un autre classeur ....
Et si tu commençais par ouvrir, comme je t'y ai invité, cette aide en ligne sur l'objet Worbooks ?
Je veux voir le mot WorkBooks dans ton code

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
4 février 2010
0
Merci
Salut ucfoutu,

je vous mets mes lignes de commande
DAED Vierge est le classeur ou je saisie B8
BUDGET est le classeur ou se trouve la feuille désignée par B8
Mais quand j'arrive sur BUDGET , B8 prend la valeur qui se trouve en B8 de BUDGET

Workbooks.Open Filename:="BUDGET.xls"
Windows("DAED Vierge.xls").Activate
Windows("BUDGET.xls").Activate
Workbooks(DAEDVierge(Sheets(Range("B8").Text).Select
Rows("7:7").Select
Selection.Insert Shift:=xlDown

Quelle commande dois je taper pour que B8 garde sa valeur de départ?

merci
Commenter la réponse de charlotte26mai
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Tes explications me laissent assez rêveur :
- tu dis :
DAED Vierge est le classeur ou je saisie B8

et plus haut, tu dis que tu veux pointer vers une feuille d'un autre classeur !
et cependant, tu cherches à pointer vers la feuille où tu es, par :

Workbooks(DAEDVierge(Sheets(Range("B8").Text).Select 


syntaxe au demeurant assez sur^prenante et non conforme à l'exemple de pointage que tu aurais trouvé dans ton aide en ligne, si tu l'avais enfin ouverte !
Workbooks(DAEDVierge(
ne veut rien dire,
pas plus, d'ailleurs, que Workbooks(DAEDVierge) ne voudrait dire quoi que ce soit !
Existent 2 possibilités :
soit : Workbooks(index_du_classeur)
soit : Workbooks("nom_du_classeur")
et je passe sur le reste de ta syntaxe000 elle montre que tu n'as pas encore commencé à lire et à comprendre que le signe . doit être utilisé entre un objet et ses propriétés... (or la collection WorkBooks est une collection d'objets WorkBook et donc (par exemple) : Workbooks("nom_du_classeur") est un objet ...
Tu as besoin d'apprendre les rudiments avant de continuer à développer .
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
4 février 2010
0
Merci
quand je dis que je debute c'est vrai c'est pas pour rien

Apparement à la premiere syntaxe que j'ai demandé la réponse à été immédiate car vous connaissiez la réponse , je vous demande un changement dse classeur et la vous me dites que je ne lis pas l'aide en ligne , je vopus dis que je n'ai pas compris et vous me dites de'apprendre les rudiments , je vous dmande juste une solution.

si vous ne la connaissez pas dites le , il me semble que les forums sont la pour s'aider mais bon merci je vais me débrouiller apprement


cordialement
Commenter la réponse de charlotte26mai
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Excuse-moi, mais je t'abandonne là !
Bien sûr que je connais la réponse !
Et bien sûr que tu la connaîtrais également si tu t'étais servi, comme je te le demandais, de ton aide en ligne !
Et bien sûr que j'estime que mon message précédent était plus qu'une simple piste
Et enfin et surtout : bien sûr que je n'aime pas agir ainsi : donner une syntaxe qu'il suffira ensuite de copier-coller (sans même chercher à comprendre !
Désolé, ami, vraiment ...
Bonne chance.

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Un dernier mot :
Voilà, entre autres, ce que tu aurais trouvé dans ton aide en ligne :
L'exemple suivant montre comment activer la feuille Sheet1 dans le classeur intitulé Cogs.xls (le classeur doit être déjà ouvert dans Microsoft Excel).

Visual Basic pour Applications
Workbooks("Cogs.xls").Worksheets("Sheet1").Activate


Là, il est question d'activer toute une feuille.
Le reste (pour ce que toi, tu cherches à faire) est vraiment trop simple et trop évident pour qui a bien voulu s'intéresser un tant soit peu aux rudiments de VBA/Excel (et permets-moi d'insister sur ce point fondamental)
Tu es débutant ? Pour ton information : moi également sous VBA (promis juré) et je suis déjà mille fois plus loin !
Voilà !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
4 février 2010
0
Merci
je suis debutant mais pas au point de ne pas savoir ouvrir une feuille d'un autre classeur, la je pense que vous me prenez pour un guignol.
Alors votre syntaxe je la connais, je l'ai deja utilisé plusieurs fois, mais je ne vois pas comment faire pour oouvrir une feuille d'un classeur avec les donnees d'un autre c'est tout.

Et pour votre gouverne, je ne fais pas que du copier coller comme vous dites , sinon ca ne sert a rien de vouloir programmer si on ne fait que recopier.

Sur ce, je vous souhaite une bonne journée!
Commenter la réponse de charlotte26mai
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Désolé, mais quand on écrit ceci :
Workbooks(DAEDVierge(Sheets(Range("B8").Text).Select 

on ne peut prétendre cela ;
Alors votre syntaxe je la connais, je l'ai deja utilisé plusieurs fois


Bref ...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu