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 :

Pb avec les valeurs sortantes COmbobox dans Userform [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Pb avec les valeurs sortantes COmbobox dans Userform
    Bonjour à tous,

    Je démarre tout juste la programmation des UserForm.

    J'ai créé un formulaire avec 3 ComboBox pour qu'il injecte ces 3 données dans 3 cellules excel.

    Si je sélectionne 1 seule valeur sur les 3 combobox créés, je me retrouve avec 2 cellules excel dont la valeur est écrasée par 0.

    Aussi, j'aimerai faire le test suivant :

    Pour chaque Combobox j'aimerai vérifier qu'il est sélectionné.

    Si ce dernier n'est pas sélectionné :

    - ne rien faire (c'est à dire ne pas modifier la valeur de la cellule associée)

    Si ce dernier est sélectionné :

    - transférer la valeur de la Comboboxe dans la cellule excel associée

    Voici le script du bouton de validation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
     
    Sheets("Feuille1").Range("A1").Value=Combobox1.Value
    Sheets("Feuille1").Range("A2").Value=Combobox2.Value
    Sheets("Feuille1").Range("A3").Value=Combobox3.Value
     
    End Sub
    J'espère avoir été clair.

    Merci pour votre aide et votre indulgence.

    Franck.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Points : 414
    Points
    414
    Par défaut Validation de Combobox dans un UserForm Excel VBA
    Bonjour Franck.

    1. Problème : écrasement des valeurs des deux ou trois cellules par le bouton "OK"

    Vous savez gérer l'événement click sur le bouton "OK" de nom BtnOk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub BtnOk_Click()
    'Sheets("Feuille1").Range("A1").Value=Combobox1.Value ' Code en commentaire
    'Sheets("Feuille1").Range("A2").Value=Combobox2.Value
    'Sheets("Feuille1").Range("A3").Value=Combobox3.Value
    End Sub
    Utilisez le bouton de validation "OK" à autre chose que récupérer les valeurs des trois Combobox parce qu'on ne sait pas si tous les Combobox ont été cliqués ou non. Ou alors tester la valeur de chaque Combobox avant d'affecter la cellule correspondante.

    Citation Envoyé par FrankCF Voir le message
    Si je sélectionne 1 seule valeur sur les 3 combobox créés, je me retrouve avec 2 cellules excel dont la valeur est écrasée par 0.
    Cela explique l'écrasement des deux cellules quand un seul Combobox a été cliqué.

    2. Solution en testant la valeur de chaque Combobox lors du OK

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit ' Validation de Combobox dans un UserForm Excel VBA
    Const nameSheet = "Feuille1"
    Const rowData1 = 1 ' Première rangée. Trouvez un nom plus adapté si ce n'est pas des Data
    Const rowData2 = rowData1 + 1
    Const rowData3 = rowData2 + 1
    Const colData = 1 ' Première colonne A. Idem. Choisir un nom de colonne représentatif.
     
    Private Sub BtnOK_Click()
        If ComboBox1.Value <> "" Then Sheets(nameSheet).Cells(rowData1, colData) = ComboBox1.Value
        If ComboBox2.Value <> "" Then Sheets(nameSheet).Cells(rowData2, colData) = ComboBox2.Value
        If ComboBox3.Value <> "" Then Sheets(nameSheet).Cells(rowData3, colData) = ComboBox3.Value
    End Sub
    Dans la solution de gFZT82 du prochain message, ces trois tests sont optimisés en un seul test dans une boucle.

    3. Solution 1 click par Combobox

    Créer autant de gestionnaire d'événement click qu'il y a de Combobox.
    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
    Option Explicit ' Click individuel par Combobox dans un UserForm
    Const nameSheet = "Feuille1"
    Const rowCombo1 = 1 ' Première rangée. Trouvez un nom plus adapté.
    Const rowCombo2 = rowCombo1 + 1
    Const rowCombo3 = rowCombo2 + 1
    Const colCombo = 1 ' Première colonne A. Idem. Choisir un nom de colonne représentatif.
     
    Private Sub ComboBox1_Click()
        Sheets(nameSheet).Cells(rowCombo1, colCombo) = ComboBox1.Value
    End Sub
    Private Sub ComboBox2_Click()
        Sheets(nameSheet).Cells(rowCombo2, colCombo) = ComboBox2.Value
    End Sub
    Private Sub ComboBox3_Click()
        Sheets(nameSheet).Cells(rowCombo3, colCombo) = ComboBox3.Value
    End Sub
    Notez la déclaration des constantes qui décrivent Feuille1. Voir ma réponse à samourai59193.
    ___________

    Si la discussion est résolue, vous pouvez cliquer sur le bouton

    En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert ci-dessous.

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Une autre solution.
    Si aucun item de la Combobox n’est sélectionné, la propriété ListIndex retourne -1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
    For i = 1 To 3
        If Controls("ComboBox" & i).ListIndex <> -1 Then
            Sheets("Feuille1").Range("A" & i).Value = Controls("ComboBox" & i).Value
        End If
    Next i
    End Sub
    Cordialement.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 27/03/2015, 23h58
  2. [XL-2010] Alimenter Combobox dans Userform avec noms définis variables
    Par aethangaia dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 27/06/2014, 15h24
  3. [XL-2010] PB remplir une ComboBox avec les valeurs de plusieurs cellules sur la même lignes
    Par eviuss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2014, 08h01
  4. Réponses: 1
    Dernier message: 16/08/2012, 15h09
  5. Réponses: 2
    Dernier message: 23/11/2003, 19h44

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