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 :

[Excel] Nom d'une ComboBox (barre d'outils formulaire)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut [Excel] Nom d'une ComboBox (barre d'outils formulaire)
    Bonjour,

    J'ai une feuille avec plusieurs combobox de la barre d'outil formulaire, portants pour noms:
    TacheLundiMatin
    TacheLundiAprem
    TacheMardiMatin
    ...
    etc jusqu'à vendredi.

    Afin de récupérer TacheLundiMatin.value, TacheLundiAprem.value et compagnie, je fais un for i = 1 to 10 avec deux SelectCase i. Le premier met une variable "Jour" à Lundi (pour i= 1 ou 2), Mardi (pour i = 2 ou 3), etc. Le second mets une variable PlageHoraire à "Matin" si i impair, et "Aprem" sinon.

    J'aimerais récupérer:

    ("Tache" & Jour & PlageHoraire).value

    Mais sans succès.

    Merci à ceux qui pourront m'aider!

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Les outils de la barre d'outils Formulaire sont liables à des macros, c'est vrai, mais je crois que tu n'en a pas compris le mécanisme.

    Tu peux programmer pour chaque comboBox une macro unique dans laquelle la valeur choisie par l'utilisateur va s'afficher dans une cellule (qui peut être cachée à l'utilisateur). Ensuite, tu récupères dans des variables le contenu de ces cellules (maVariable = Range("C9").Value, par exemple).

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    En fait la je clique sur un bouton valider et ça copie le contenue de chacune des combobox... Ca marche en tapant les noms un par un mais j'arriver pas à boucler pour ne pas avoir à saisir tous les noms.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Sub BoutonValidation_Click()
      NumeroDeSemaine = 1
      NumeroDeBinome = 1
     
      ' On stocke dans LigneFin l'indice de la dernière ligne utilisée de la base de données
      LigneFin = Worksheets("Base de données").Range("A1").End(xlDown).Row
     
      ' Boucle pour remplir une semaine de travail (10 lignes) dans la base de données
      For i = 1 To 10
     
        ' Pour pouvoir récupérer les données des ListBox qui ont un nom tel que "TacheLundiMatin",
        ' mais qui sont stockées dans la base de données sous forme de numéro de demi-journées,
        ' on passe par un Select Case.
        Select Case i
          Case 1, 2
          NomDuJour = "Lundi"
          Case 3, 4
          NomDuJour = "Mardi"
          Case 5, 6
          NomDuJour = "Mercredi"
          Case 7, 8
          NomDuJour = "Jeudi"
          Case 9, 10
          NomDuJour = "Vendredi"
        End Select
        Select Case i
          Case 1, 3, 5, 7, 9
          PlageHoraire = "Matin"
          Case 2, 4, 6, 8, 10
          PlageHoraire = "Aprem"
        End Select
     
        ' Remplissage d'une ligne de la base de données
        With Worksheets("Base de données")
          .Range("A" & LigneFin + i).Value = NumeroDeBinome
          .Range("B" & LigneFin + i).Value = NumeroDeSemaine
          .Range("C" & LigneFin + i).Value = i
          '.Range("D" & LigneFin + i).Value = MsForms.ComboBox("Tache" & NomDuJour & PlageHoraire).Value
          '.Range("E" & LigneFin + i).Value = Probleme & NomDuJour & PlageHoraire.Value
        End With
      Next i
     
    End Sub
    Le problème est au niveau des dernières lignes que j'ai mis en commentaires...

    Par contre j'ai dit une bêtise, les controles ne viennent pas de la barre d'outils formulaire mais controle

  4. #4
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Re-salut

    Je ne croie pas que ça puisse marcher de toutes façons.

    Et si tu utilisait la validation de cellules à la place des ComboBox de la barre d'outils Forumlaire. Tu aurais directement ce que tu cherches dans des cellules arrangées en colonnes pour les plages horaire et les lignes pour les jours. Si ce sont les mêmes tâches qui reviennent tout le temps, tu les énumères plus loin sur ta feuille (tu peux même masquer la colonne en question). ensuite tu sélectionne la plage de ton tableau et tu clique sur Données > Validation... Puis sous Autoriser, sélectionne Liste. Pour la Source tu sélectionne la plage qui contient la liste de tâches.

    Dans ta macro tu n'aura plus qu'à traiter les cellules de la plage de ton tableau.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Non c'est pas si simple ça peut marcher qu'avec des combobox... C'est une base de donnée qui grandit à chaque fois qu'on appuie sur le bouton valider. Par contre comme je l'ai dit plus haut je me suis trompé c'est pas des boutons de la barre d'outil formulaire mais de la barre d'outil contrôle. Je sais que c'est faisable c'est juste la syntaxe que je trouve pas... J'avais essayé aussi Controls("Tache" & Jour & PlageHoraire).Value mais sans succès

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Et dans une boucle For Each qui cherche les composants ComboBox...

    Attends un peu... Tes contrôles sont directement sur une feuille ou dans un UserForm? Bien que je ne sache pas si ça changerait quelque chose...

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Directement dans une feuille. La boucle ça donnerait quoi ? Sachant que j'aime pas trop mais si y'a que ça à faire...

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Essaie la collection Shapes.

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ok j'ai finalement trouvé
    Worksheets("Saisie").OLEObjects("TacheLundiMatin").Object.Value

    Ca marche avec ça, donc plus de problème.

    En tout cas l'aide d'excel est mal foutue ! Il faut batailler pour trouver les infos.

Discussions similaires

  1. comment récupérer le nom d'une combobox dans une servlet
    Par phenix1988 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 09/05/2010, 13h20
  2. Réponses: 2
    Dernier message: 07/07/2008, 18h24
  3. Réponses: 22
    Dernier message: 03/08/2007, 15h57
  4. [VBA][Excel] Nom d'une command bouton
    Par ecirb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2007, 11h29
  5. créer classeur Excel portant le nom d'une ComboBox
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 06/12/2006, 09h01

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