IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment sélectionner une "Sheet" autrement que par un nom [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut Comment sélectionner une "Sheet" autrement que par un nom
    Bonjour
    Mon code ne s'exécute que si l'onglet se nomme "Untel", je recherche l'astuce pour que le code ne tienne pas compte du nom mais de l'emplacement par exemple j'ai un code "Feuil2.Select" ou "Feuil4.Select" qui fonctionne mais ne fonctionne mais pas pour "Feuil6.Select", pourquoi ? j'ai rajouté des feuilles dans ce fichier qui avait un bout de code et qui utilisait Sheet2.Sélect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Source.Activate
                Sheets("Untel").Select
                Cells.Select
                Selection.Copy
    Merci pour l'astuce

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Tu peux appeler la feuille par sa position, par exemple la 4ème feuille donnera :
    Autre exemple pour sélectionner la dernière feuille, peu importe le nombre de feuilles dans le classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Sheets.Count).Select
    Et si tu veux être certain de toujours prendre en compte une cellule, peu importe où elle se situe selon que l"on a inséré des lignes, des colonnes ou des feuilles, c'est de nommer cette cellule et ensuite y faire référence dans ton code de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("NomDeMaCellule")

  3. #3
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour Fring
    J'ai bien noté et ça fonctionne sauf pour ta troisième proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("NomDeMaCellule")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Macro1()
     
        Range("B10").Select
    End Sub
    qui revoie toujours la sélection sur B10 sur toutes les feuilles ce qui est normal, comment fais tu pour la "nommer" de façon qu'elle soit uniquement dans la feuille ou elle a été nommée sans sélectionner la Sheet ?

    Merci, ces petites astuces sont très interessantes

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Une question simple mais ma foi primordiale: Pourquoi tu veux sélectionner une cellule ou même une feuille?

  5. #5
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour
    Fring m'a apporté la réponse par 'Sheets(6).Select' pour ne pas bloquer mon code sur des classeur qui n'avaient pas tous le même nom de la Sheet que je voulais ouvrir car c'est l'opérateur qui sélectionne son fichier personnalisé avec parfois des Sheets renommées par lui, super c'est ok pour moi, mais Fring me propose une astuce qui attire ma curiosité dont je ne connais pas et demandé sur mon dernier post ... comment 'nommer une cellule' précisément et que le code va se positionner dessus comme proposé

    Et si tu veux être certain de toujours prendre en compte une cellule, peu importe où elle se situe selon que l'on a inséré des lignes, des colonnes ou des feuilles, c'est de nommer cette cellule et ensuite y faire référence dans ton code de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("NomDeMaCellule")
    Si c'est une astuce, je trouve qu'elle mérite son attention
    Merci

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Ma question était claire: Pourquoi sélectionner une cellule? Du moment que tu peux agir sur les propriétés de la cellule sans la sélectionner.
    Même en renommant une cellule de la feuille 6 NomDeTaCellule
    Si la feuille active est la feuille 1 et tu mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets(6).range("NomDeTaCellule").Select
    Tu auras une erreur.
    Fring ne t'a jamais dit de sélectionner ta cellule.

  7. #7
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Merci pour toutes ses réponses ... tout est très claire ... j'étais parti à rêver ... je souris ... mais mieux vaut être optimiste et avoir tort ... que d'être pessimiste et avoir raison ...
    ... Bien cordialement ...

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Je n'ai pas été complet dans ma réponse...dans la plupart des cas, il n'est pas nécessaire d'utiliser ".Select"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(2).Select
    Range("B1").Select
    Selection.Interior.ColorIndex = 6
    En faisant de la manière suivante, tu obtiens le même résultat sans passer par une sélection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(2).Range("B1").Interior.ColorIndex = 6
    Et si tu nommes ta cellule B1 par exemple "MaCel", tu peux directement y faire référence sans préciser la feuille vu que MaCel est unique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("MaCel").Interior.ColorIndex = 6

  9. #9
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Je viens de réaliser et de valider le "nom" de la cellule et je trouve que c'est une superbe astuce, un code qui sélectionne une cellule nommée sans définir la Sheet, pour moi ce code est une première, et ça vaut son attention, j'étais parti sur une question simple et j'apprends des tas de choses.
    Tout à l'heure j'avais cherché à la nommer mais j'oubliai de faire Entrée pour la valider, son nom doit s'écrire dans le coin supérieur gauche de la feuille d'excel, j'avais déjà vu en tant que formule pour déterminer le nom d'une plage de données, c'est méthode est peu utilisée et portant mérite son détours car elle peut déterminer plusieurs plages de cellules non adjacentes ce qui est très très interessant.
    Bien cordialement et Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment sélectionner une ligne dans une TStringGrid ?
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 11
    Dernier message: 22/08/2005, 12h38
  2. Réponses: 12
    Dernier message: 27/06/2005, 19h06
  3. Réponses: 3
    Dernier message: 21/01/2004, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo