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 :

Renvoyer la valeur saisie dans la cellule inférieure suite à un choix dans un combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Par défaut Renvoyer la valeur saisie dans la cellule inférieure suite à un choix dans un combobox
    bonjour
    comment récupérer la valeur saisie dans une zone texte et alimenter la plage en fonction du choix d'une valeur dans un combobox
    la plage de la combo = E20:I20
    la plage des valeurs renvoyées= E21:I21
    exmple je sélectionne dans le combo du formulaire (FormSaisie.ComboLot) la valeur 15200 correspondant à la valeur située en E20, je saisie dans le champ texte la quantité, qui doit alimenter alimenter la cellule inférieure au choix de la combo E21.

    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    je saisie dans le champ texte la quantité, qui doit alimenter alimenter la cellule inférieure au choix de la combo E21.
    Est-ce que tu peux donner un exemple, je ne suis pas sûr de comprendre (c'est la deuxième fois ce matin, je vais siroter un café...).

  3. #3
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Si j'ai bien compris (j'suispas sur), tu veux inserer une valeur de quantité en dessous de ta valeur saisie par la ComboBOX.

    pour cela je pense que tu as besoin de connaitre la position de la valeur dans la liste déroulante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Val = ComboBox1.ListIndex
    ce code te permet de récupérer la position de ta valeur. Après il suffit de te déplacer sur la bonne colonne.

    Attention je crois me rapeller que la 1ère valeur est en position 0 ...

    Je te conseille aussi d'utiliser l'Objet Cells : Cells(N°ligne,N°colonne) pour pouvoir te déplacer faciliment de colonne en colonne

    Tu dis si c'est bien ça que tu veux

    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Par défaut
    voici exemple merci
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Private Sub Btn_Valider_Click()
        'vérifie que le choix mouvement est saisi
        If Len(Combo_ChoixMvt) = 0 Then
            MsgBox "Vous devez choisir un type de mouvement"
        Else
            'vérifie la présence d'une date
            If Len(Champ_Date) = 0 Then
            MsgBox "vous devez saisir une date"
            Champ_Date.SetFocus
            Else
                'vérifie le choix du lot
                If Len(Combo_ChoixLot) = 0 Then
                MsgBox "vous devez choisir un Lot"
                Else
                    'vérifie que la quantité est saisie
                    If Len(Champ_Qte) = 0 Then
                    MsgBox "vous devez entrer une quantité."
                    Champ_Qte.SetFocus
                    Else
                        If ((Combo_ChoixMvt = "Sortie") And (Combo_Unite = "")) Then
                            MsgBox "Le champ Unité doit être renseigné pour une sortie"
                            Combo_Unite.SetFocus
                        Else
     
     
                        End If
                      End If
                End If
            End If
        End If
        'insersion d'une ligne
        Rows("22:22").Select
        selection.Insert shift:=xlDown
        'venir sur la cellule a22
        Range("a22").Select
        ActiveCell.Formula = Form_SaisieMvt.Combo_ChoixMvt
        'venir sur la cellule b22
        Range("b22").Select
        ActiveCell.Formula = CDate(Form_SaisieMvt.Champ_Date)
        'venir sur la cellule c22
        Range("c22").Select
        ActiveCell.Formula = Form_SaisieMvt.Combo_Unite
        'venir sur la cellule d22
        Range("d22").Select
        ActiveCell.Formula = Form_SaisieMvt.Champ_Commentaire
     
        ' ici mon probleme
        'récupérer la valeur de Champ_Qte en fonction du choix de Combo_choix
        Dim compteur As Byte, valeur As String
        valeur = Form_SaisieMvt.Combo_ChoixLot.ListIndex
        compteur = 1
        Do
            compteur = 1 + compteur
            Cells(1, compteur).Select
            If ActiveCell.Formula = valeur Then
                Cells(2, compteur).Select
                ActiveCell.Formula = Form_SaisieMvt.Champ_Qte
        Exit Do
            End If
         Loop While IsEmpty(ActiveCell)
     
     
     
     
    End Sub

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'espère que la solution d'Igloobel est la bonne; est-ce que tu l'as essayé ? Ce que j'essaie de comprendre c'est ce que tu as écrit :

    exmple je sélectionne dans le combo du formulaire (FormSaisie.ComboLot) la valeur 15200 correspondant à la valeur située en E20, je saisie dans le champ texte la quantité, qui doit alimenter alimenter la cellule inférieure au choix de la combo E21.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    J'espère que la solution d'Igloobel est la bonne; est-ce que tu l'as essayé ? Ce que j'essaie de comprendre c'est ce que tu as écrit :
    bonjour
    oui j'ai essayé voir ma réponse plus haut
    mais je ne suis pas sûr de bien m'y prendre pour réaliser le code.

    merci cordialement

  7. #7
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    plusieurs petit conseils

    tout d'abord dans le post utilise le # de la deuxième barre, c'est pour mettre les balises Code et indente les instructions ce qui donne :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Private Sub Btn_Valider_Click()
        'vérifie que le choix mouvement est saisi
        If Len(Combo_ChoixMvt) = 0 Then
            MsgBox "Vous devez choisir un type de mouvement"
        Else
            'vérifie la présence d'une date
            If Len(Champ_Date) = 0 Then
                MsgBox "vous devez saisir une date"
                Champ_Date.SetFocus
            Else
                'vérifie le choix du lot
                If Len(Combo_ChoixLot) = 0 Then
                    MsgBox "vous devez choisir un Lot"
                Else
                    'vérifie que la quantité est saisie
                    If Len(Champ_Qte) = 0 Then
                        MsgBox "vous devez entrer une quantité."
                        Champ_Qte.SetFocus
                    Else
                        If ((Combo_ChoixMvt = "Sortie") And (Combo_Unite = "")) Then
                            MsgBox "Le champ Unité doit être renseigné pour une sortie"
                            Combo_Unite.SetFocus
                        Else
     
                        End If
                    End If
                End If
            End If
        End If
        'insersion d'une ligne
        Rows("22:22").Select
        Selection.Insert shift:=xlDown
        'venir sur la cellule a22
        Range("a22").Select
        ActiveCell.Formula = Form_SaisieMvt.Combo_ChoixMvt
        'venir sur la cellule b22
        Range("b22").Select
        ActiveCell.Formula = CDate(Form_SaisieMvt.Champ_Date)
        'venir sur la cellule c22
        Range("c22").Select
        ActiveCell.Formula = Form_SaisieMvt.Combo_Unite
        'venir sur la cellule d22
        Range("d22").Select
        ActiveCell.Formula = Form_SaisieMvt.Champ_Commentaire
     
        ' ici mon probleme
        'récupérer la valeur de Champ_Qte en fonction du choix de Combo_choix
     
        Dim compteur As Byte, valeur As String
        valeur = Form_SaisieMvt.Combo_ChoixLot.ListIndex
        compteur = 1
        Do
            compteur = 1 + compteur
            Cells(1, compteur).Select
            If ActiveCell.Formula = valeur Then
                Cells(2, compteur).Select
                ActiveCell.Formula = Form_SaisieMvt.Champ_Qte
                Exit Do
            End If
        Loop While IsEmpty(ActiveCell)
     
    End Sub
    C'est plus facile à lire

    Deuxième conseil
    tu peux simplifer toutes les instructions avec les .select qui sont inutile du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'insersion d'une ligne
        Rows("22:22").Select
        Selection.Insert shift:=xlDown
     
    'en
     
        Rows("22:22").Insert shift:=xlDown
    Troisième conseil
    Mettre en dur le N° de ligne va te poser un problème il est préférable d'utiliser une variable, exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim Lign As Long        'N° de ligne à inserer
        Dim Plage As String     'Plage pour l'utilisation de Row
     
        Plage = Trim(Str(Lign)) & ":" & Trim(Str(Lign))
        Rows(Plage).insert shift:=xlDown
    Quatrième conseil

    Comme je te l'ai dit utilise l'objet Cells çà la place de Range cela te permettra de boucler plus facilement pour insérer tes données

    Tu dis si cela te va

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Par défaut
    Merci Igloobel
    j'ai pas tout compris
    je pense que mon problème est simple mais je l'ai peut-être mal expliqué
    j'ai deux lignes sur une feuille
    la première ligne contient des références sur cellules e20:i20
    la deuxième ligne vide doit contenir les quantités après validation de la saisie e21:i21
    dans un formulaire lorsque je fais un choix d'une référence par une liste déroulante j'inscris une quantité dans un champ zonetext
    cette quantité doit s'inscrire sous la référence choisie lors de la validation de mon formulaire.
    (Copier la valeur saisie et la coller sous la référence choisie)

    merci de votre patience

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Peut-être quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Form_SaisieMvt
        [E21].Offset(, .Combo_ChoixLot.ListIndex) = .Champ_Qte.Text
    End With

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

Discussions similaires

  1. Réponses: 24
    Dernier message: 23/12/2011, 16h20
  2. [Toutes versions] lire dans un onglet à partir de références nommé dans une cellule
    Par crissud dans le forum Excel
    Réponses: 2
    Dernier message: 24/03/2011, 07h36
  3. [XL-2000] Ajout d'une plage de cellule verticalement selon nombre figurant dans une cellule
    Par brumarj dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/06/2010, 17h30
  4. liste de choix dans une cellule
    Par Hepil dans le forum Excel
    Réponses: 11
    Dernier message: 03/07/2007, 11h52
  5. Suite au choix dans une multibox
    Par discogarden dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/03/2006, 20h43

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