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 :

Recherche par combobox & récupération puis enregistrement [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Par défaut Recherche par combobox & récupération puis enregistrement
    Bonjour à tous, n'ayant pas de connaissances fortes en vba j ai besoin d'aide, suite à la création d'un useform (après recherche et plusieurs tentatives infructueuses) je me permets une demande concernant la récupération du contenu d’une cellule (texte) dans un tableau en fonction du choix fait dans un combo box placé dans un userform. ( tout le useform fonctionne sauf cette fonction introuvable)
    j ai dans un tableau des lignes avec 5 colonnes lorsque je sélectionne une valeur dans le combobox (les valeurs sont en col A) et je récupère les autres valeurs dans des textbox suivant les col B C D E
    Ce que je souhaite faire c'est que le texte récupéré dans le text box récupéré de la colonne E soit modifiable en écriture et que ce texte soit (par une cde bouton) renvoyé dans cette même cellule E correspondante au choix du combobox préalablement sélectionné (en fait c'est pour la réalisation d'un suivi sur un article)

    Exemple plus précis de la demande :Sélection Combo = 111 qui se trouve en A5, en E5= text "Multiprise" Récupération dans texte box 9, puis ajout teste " 220volts" clic sur bouton, Réenregistrement dans E5 de"Multiprise 220volts"

    dans l’espoir qu'une personne trouve la solution ou propose des exemples, Par avance Merci de votre aide
    Kire36

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour et bienvenue sur le forum
    1- Il y a beaucoup de discussions qui traitent ce genre de traitement .... tu n'as pas bien/trop cherché
    2- Selon ma petite expérience sur ce site et dorénavant pour espérer de l'aide il est conseillé d'avancer au moins le code que tu as développé après maintes tentatives (étant débutant VBA)
    3- Pour ce genre d'exercice je préfère utiliser la même USF avec un case à cocher : Nouveau saisie ou bien Modification
    Si tu coche Nouveau saisie tu aura 5 textbox... tu fais le saisie et tu valide via un bouton de commande
    Si tu coche Modification je cache le textbox et j'affiche un combobox ... au modification de cette combobox je charge les textbox ... je porte les modifications et je ré-enregistre
    Ce n'est que le travail d'un autodidacte VBA certain y a mieux que ça mais ce sont les limites de mes connaissances :



    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
    Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 2 To Sheets("Source").Range("A65536").End(xlUp).Row
      ComboBox1 = Sheets("Source").Range("A" & i)
      If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("Source").Range("A" & i)
    Next i
    ComboBox1.Value = ""
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox4.Value = ""
    TextBox5.Value = ""
    TextBox3.Value = Sheets("Source").Range("A" & Rows.Count).End(xlUp).Row
    ComboBox1.Visible = False
    OptionButton2 = True
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub OptionButton2_Click()
    If OptionButton2 = True Then
    TextBox3.Visible = True
    ComboBox1.Visible = False
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub OptionButton1_Click()
    If OptionButton1 = True Then
    TextBox3.Visible = False
    ComboBox1.Visible = True
    End If
    End Sub
    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
    Private Sub CommandButton2_Click()
    Dim plage As Range
    Dim Cell As Range
    Dim Dernligne As Long
    Dim L As Long
    Dim coderech As String
    Dernligne = Sheets("Source").Range("A" & Rows.Count).End(xlUp).Row
    If OptionButton1 = True Then
    coderech = ComboBox1.Value
    With Sheets("Source")
    Set plage = .Range("A2:A" & Dernligne)
    For Each Cell In plage
     If Cell.Value = coderech Then
      .Cells(Cell.Row, 2).Value = TextBox1.Value
     .Cells(Cell.Row, 3).Value = TextBox2.Value
      .Cells(Cell.Row, 4).Value = TextBox4.Value
       .Cells(Cell.Row, 5).Value = TextBox5.Value
     
     End If
    Next Cell
    End With
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox4.Value = ""
    TextBox5.Value = ""
     
     
    MsgBox "modification effectuée"
    Else
    With Sheets("Source")
    L = Dernligne + 1
    .Cells(L, 1) = TextBox3.Value
    .Cells(L, 2) = TextBox1.Value
    .Cells(L, 3) = TextBox2.Value
    .Cells(L, 4) = TextBox4.Value
    .Cells(L, 5) = TextBox5.Value
     
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox3.Value = ""
    TextBox4.Value = ""
    TextBox5.Value = ""
    MsgBox "Nouveau Article enregistré"
    End With
    End If
    End Sub
    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
    Private Sub ComboBox1_Change()
    Dim plage As Range
    Dim Cell As Range
    Dim Dernligne As Long
    Dim coderech As String
    coderech = ComboBox1.Value
    With Sheets("Source")
    Dernligne = .Range("A" & Rows.Count).End(xlUp).Row
    Set plage = .Range("A2:A" & Dernligne)
    For Each Cell In plage
     If Cell.Value = coderech Then
     TextBox1.Value = .Cells(Cell.Row, 2).Value
     TextBox2.Value = .Cells(Cell.Row, 3).Value
     TextBox4.Value = .Cells(Cell.Row, 4).Value
     TextBox5.Value = .Cells(Cell.Row, 5).Value
     
     End If
    Next Cell
    End With
    End Sub
    Voila un fichier test à étudier, à adapter à tes besoins et revenir si nécessaires
    BONNE CONTINUATION
    Fichiers attachés Fichiers attachés

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Par défaut
    Bonjour BENNASR
    je suis agréablement surpris et très étonné de la rapidité à comprendre mon problème et surtout le retour de la solution, moi qui est passé 72 heures d'essai pour n'arriver à rien. tu as compris exactement ma demande que je vais m'empresser d'adapter à mon besoin actuel.
    Encore un grand Merci pour ton aide précieuse.

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    KIRE36, Toujours un plaisir de satisfaire une demande d'aide sur ce super forum
    faite tes tests et adapte à tes besoins et revenir si nécessaire
    Si c'est ce que tu cherches merci de cliquer ou cliquera en bas sur RÉSOLU et Bonne Continuation

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Bennasr,

    L'égalité des valeurs booléennes peut s'utiliser comme celle des valeurs numériques.
    Ce qui permet d'éviter un bloc If et, partant, d'alléger le code.

    Ainsi, ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub OptionButton2_Click()
    If OptionButton2 = True Then
    TextBox3.Visible = True
    ComboBox1.Visible = False
    End If
    End Sub
    peut se remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TextBox3.Visible = OptionButton2 
    ComboBox1.Visible = Not TextBox3.Visible
    D'autre part, au balayage des cellules, j'aurais opté pour les méthodes Find et FindNext
    C'est mon avis.

    Enfin, si l'on souhaite aller plus loin. (pour le fun!)
    Une possibilité aurait consisté à
    - Obtenir en lecture seule une propriété du formulaire (Property Get), celle-ci codée au sein du module qui lui est affecté, et non dans un module de classe.
    - Piloter le formulaire depuis un module standard et lancer cette recherche en fonction de cette propriété.

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour MarcelG
    J'ai insisté à afficher les codes et ne pas me contenter du fiche joint car je sais que la plupart n'ouvre pas les pièces jointes

    ce ci pour attendre des améliorations et le but est atteint
    je connais pas ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TextBox3.Visible = OptionButton2 
    ComboBox1.Visible = Not TextBox3.Visible
    j'ai enregistré dans ma biblio des codes
    Merci et Bonne journée

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2018
    Messages : 3
    Par défaut
    Je redis encore un grand Merci aux personnes qui pratiquent l'entraide vers ceux qui non pas forcement le savoir mais qui tente de l’apprivoiser à Bennasr et MarcelG encore un grand Merci
    j ai effectué la mise à jour de mon useform et macro et cela fonctionne à merveille
    je vous quitte pour le moment mais je reviendrai sur ce forum en raison de sa forte bienveillance.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/04/2015, 16h46
  2. Recherche multicritères par combobox.
    Par Julieta dans le forum IHM
    Réponses: 3
    Dernier message: 13/12/2007, 09h54
  3. Rechercher lien dans html puis enregistrer destination
    Par mims1664 dans le forum Langage
    Réponses: 4
    Dernier message: 28/07/2007, 22h26
  4. Récupération et enregistrement d'un gif par http
    Par giloutho dans le forum Web & réseau
    Réponses: 1
    Dernier message: 17/12/2005, 14h31

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