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 -combobox et boucle pour trouver deux données puis inscrire une valeur sur une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Par défaut VBA -combobox et boucle pour trouver deux données puis inscrire une valeur sur une cellule
    Bonjour à tous développeurs,

    j'ai un petit problème sur vba pour effectuer la tâche que je souhaite, je sollicite alors votre aide pour m'aider .

    informations :
    il y a trois colonnes :
    colonne 1 : correspond aux codes barres
    colonne 2 : correspond aux n° d'adhérent
    colonne 3 : correspond à la date de retour du produit.

    alors voici le problème :
    sur un userform il y a :
    - une combobox1 qui sélectionne les codes barres sur un autre feuille (boucle)
    - une combobox 2 qui sélectionne le N° d'adhérent sur une autre feuille aussi (boucle)

    mon problème et lorsque je sélectionne le code barre de la combobox1, et dans la combobox2 je sélectionne le n° adhérent,
    je souhaite que cela recherche dans la colonne 1 le code barre que j'ai sélectionné de la combobox1 et que la combobox2 recherche le numéro d'adhérent.
    en gros, un adhérent à emprunté un produit et donc j'ai réussi à l'inscrire dans deux colonnes maintenant il veut le rendre. donc je souhaite que ma commande recherche le code barre du produit correspondant et le numéro de l'adhérent (car plusieurs produits ont le même code barre, et plusieurs personnes peuvent emprunter ce produit donc il faut faire une association) et que lorsque je fais valider, cela affiche sur la ligne correspondant au code barre + n° adhérent la date de retour.

    exemple :

    colonne 1 colonne 2 colonne 3
    543243 6543654
    876878 7654323
    876878 7654325
    567543 0987654

    voila : dans ma combobox 1 : je sélectionne la le code barre : 876878
    dans la combobox2 : je sélectionne le code barre : 7654323

    donc il m'associe alors la ligne 2 car il ya le code barre + le numéro adhérent correspondant à mes deux combobox, et non ma ligne 3 qui contient mon code barre mais pas le bon numéro adhérent.
    et quand je fais valider : ca ajoute en colonne 3 ligne 2 : la date du jour.

    j'ai essayer de faire 2 boucles puis un activecell.offset (0,3)
    mais je n'y arrive pas dutout.

    auriez vous la solution ?

    merci à vous pour votre retour.

  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,

    Essaie en adaptant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim C As Range
        With Sheets("Feuil1")    ' à modifier
            For Each C In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
                If C.Value = Me.combobox1.Value And C.Offset(, 1).Value = Me.combobox2.Value Then
                    C.Offset(, 2).Value = Date
                    Exit For
                End If
            Next C
        End With

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Par défaut
    bonjour Daniel.c, merci pour ta réponse,
    j'ai modifié le nom de la feuille
    et j'ai inséré ton code dans mon bouton validé mais rien ne se passe.
    faudrait t-il pas aussi rajouter la recherche dans la colonne 2 car je vois qu'il ny a qu'une recherche pour range A2 mais rien pour la colonne 2 ?

    j'ai reussi a adapter c'est bon ce que je voulais pour ajouter la date, mais maintenant avec cette meme formule, j'ai essayé d'ajouter + 1 dans une case par rapport à la valeur que j'avais avant par exemple = j'ai 2 et avec le code j'ai 3

    mais pour une autre utilisation du code, je voudrais qu'il inscrive la valeur de la textbox1 dans la case d'à coté mais je n'y arrive pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Dim C As Range
        With Sheets("cotisation_annuel")
            For Each C In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
                If C.Value = Me.combobox1.Value Then
                   C.Offset(0, 1).Value = textbox1
                    Exit For
                End If
            Next C
        End With
    End Sub
    avez vous la réponse ?

  4. #4
    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'ai reussi a adapter c'est bon ce que je voulais pour ajouter la date, mais maintenant avec cette meme formule, j'ai essayé d'ajouter + 1 dans une case par rapport à la valeur que j'avais avant par exemple = j'ai 2 et avec le code j'ai 3
    Elle est où cette case ? Par exemple, si c'est A1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Value = Range("A1").Value + 1
    mais pour une autre utilisation du code, je voudrais qu'il inscrive la valeur de la textbox1 dans la case d'à coté mais je n'y arrive pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C.Offset(0, 1).Value = Me.Textbox1.Text

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Par défaut
    merci pour la partie du code 1 j'ai reussi,
    pour l'ajouter d'une valeur de la text box j'ai ajouté ton code mais rien ne se passe.
    pour info : ya un bouton qui permet de generer les valeurs dans le combobox1
    et en dessous ya une textbox pour ajouter une valeur qui devra etre à coté de celle du n° de la combobox choisi, j'ai mit le code e entier pour info, mais je ne vois pas ou est l'erreur :

    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
    Private Sub CommandButton1_Click()
    num_ligne = 2
     
    Do While Worksheets("cotisation_annuel").Cells(num_ligne, 1) <> ""
        combobox1.AddItem Worksheets("cotisation_annuel").Cells(num_ligne, 1)
        num_ligne = num_ligne + 1
     
        Loop
    End Sub
     
    Private Sub valider_cotisation_Click()
     
        Dim C As Range
        With Sheets("cotisation_annuel")
            For Each C In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
                If C.Value = Me.combobox1.Value Then
                   C.Offset(0, 1).Value = Me.textbox1.Text
                    Exit For
                End If
            Next C
        End With
    End Sub

  6. #6
    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
    S'il n'y a rien en colonne B, c'est soit que le textbox est vide ou, plus probablement que tu ne trouves pas égalité. Pour éviter les problèmes de casse, mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If UCase(C.Value) = UCase(Me.combobox1.Value) Then
    ou mieux, puisqu'il s'agit de nombres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If CInt(C.Value) = CInt(Me.combobox1.Value) Then
    Enfin, plutôt qu'une boucle, tu peux utiliser la fonction "Match" pour rechercher la valeur du combobox en colonne A; en transformant cette dernière en numérique puisque le combobox fournit toujours une valeur texte.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    comment reseigne tu tes combobox?

    Tu pourais affectere deux colonne a tes combo une dementionné a zéro de largeur contenant le numéro de la ligne row et la deuxième avec le code.

    Anisi quand tu sélectionne un code tu retrouve la ligne directement sans recherche!

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/04/2015, 03h27
  2. Réponses: 6
    Dernier message: 09/02/2015, 10h54
  3. Réponses: 2
    Dernier message: 18/11/2012, 11h25
  4. [XL-2003] Tester présence d'une valeur sur une plage donnée
    Par Monsieur Peck dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/04/2010, 18h51
  5. [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Par tchauviere dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/01/2008, 10h21

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