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

Résolu
charlotte26mai Messages postés 6 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 4 février 2010 - 3 févr. 2010 à 12:59
ucfoutu Messages postés 18038 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

14 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
3 févr. 2010 à 13:09
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
3 févr. 2010 à 16:49
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
3 févr. 2010 à 13:28
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
0
charlotte26mai Messages postés 6 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 4 février 2010
3 févr. 2010 à 15:04
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
charlotte26mai Messages postés 6 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 4 février 2010
3 févr. 2010 à 17:20
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
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
3 févr. 2010 à 18:27
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)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
3 févr. 2010 à 20:03
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
0
charlotte26mai Messages postés 6 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 4 février 2010
4 févr. 2010 à 09:23
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
4 févr. 2010 à 09:41
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
0
charlotte26mai Messages postés 6 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 4 février 2010
4 févr. 2010 à 10:41
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
4 févr. 2010 à 10:50
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
4 févr. 2010 à 10:57
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
0
charlotte26mai Messages postés 6 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 4 février 2010
4 févr. 2010 à 12:44
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!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
4 févr. 2010 à 12:50
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
0
Rejoignez-nous