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 :

VBA: activer une feuille avec un libellé issu d'une variable [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut VBA: activer une feuille avec un libellé issu d'une variable
    Bonjour,

    Je cherche à récupérer des valeurs présentes dans une feuille qui aurait le nom d'une variable de texte, elle même récupérée d'une cellule au format date.

    J'ai essayé plusieurs solutions en créant une variable de texte et de type Worksheet mais aucune ne fonctionnent

    Pourriez-vous m'aider svp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Majdat()
     
    Dim datjour As String
    'Dim ws As Worksheet  'solution n°2
    Dim a As Integer
     
     
    a = 2
     
    Do While Range("B" & a).Value <> "" Or Range("C" & a).Value <> ""
        a = a + 1
    Loop
     
    datjour = Format(Range("A" & a), "dd-mm")
     
    'ws.Name = datjour  'Solution n°2
    Range("C" & a).Value = Sheets(datjour).Range("C4").Value
    Range("D" & a).Value = ws.Range("C5").Value 'solution n°2

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Où et comment as-tu déclaré et initialisé la variable ws ?
    mais aucune ne fonctionnent
    ne nous dit rien sur le dysfonctionnement ! (erreur ? autre ?). Précise.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Les informations sont présentes en commentaire dans mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Dim ws As Worksheet  'solution n°2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'ws.Name = datjour  'Solution n°2

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    pas compliqué via la collection Worksheets (voir l'aide VBA !) et un indice de type texte
    contenant le nom de la feuille mais comme on ne voit pas de tentative par code …



    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Les informations sont présentes en commentaire dans mon code.
    Que nenni.
    La 1ère déclare bien
    La seconde est en commentaire et (même en vigueur) ne saurait initialiser une variable objet (ce qu'est une feuille de calcul)
    Ouvre vite ton aide VBA à la rubrique Set.
    C'est par cette instruction, que l'on initialise une variable objet

  6. #6
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Merci unparia. J'ai lu le tuto "http://silkyroad.developpez.com/VBA/FeuilleDeCalcul/" et donc utilisé la fonction "set" mais ca ne fonctionne toujours pas.

    J'obtiens le message "L'indice n'appartient pas à la sélection"



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Majdat()
     
    Dim datjour As String
    Dim ws As Worksheet  'solution n°2
    Dim a As Integer
     
     
    a = 2
     
    Do While Range("B" & a).Value <> "" Or Range("C" & a).Value <> ""
        a = a + 1
    Loop
     
    datjour = Format(Range("A" & a), "dd-mm")
     
    Set ws = Worksheets(datjour)

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    J'obtiens le message "L'indice n'appartient pas à la sélection"
    Ce qui veut clairement dire que ton classeur n'a pas de feuille dont le nom est e contenu de ta variable datjour.
    Déjà : passe en mode debug et vérifie le contenu de ta variable datjour ! (c'est là un premier réflexe élémentaire).

    Maintenant (et par ailleurs) :
    analyse bien ta boucle do ... Loop
    Telle que faite, ta variable a n'est pas le rang de la dernière ligne contenant une donnée en colonne B ou en colonne C, mais le rang de la ligne suivante (puisque tu incrémentes systématiquement a).
    Si c'est ce que tu veux vraiment (mais tu es seul à le savoir) , "va bene". Sinon : tu te trompes assez manifestement (et là encore, le mode debug te permettrait de savoir ce que vaut a à la sortie de ta boucle, non ?)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Un petit détail qui peut t'empester la vie!
    N'y aurait il pas un deux ou trois espaces que tu n'aurais pas vue dans le nom de ton onglet?

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

Discussions similaires

  1. [XL-2013] Graphiques sur une feuille avec plage de données sur une autre ( vba )
    Par Novice72 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/08/2016, 18h13
  2. construire une feuille avec les libelles
    Par zora700 dans le forum Débuter
    Réponses: 5
    Dernier message: 11/03/2012, 08h53
  3. Réponses: 5
    Dernier message: 27/08/2010, 07h29
  4. Réponses: 9
    Dernier message: 23/02/2008, 08h07
  5. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56

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