Modifier une base de donnée à partir dune listebox avec la fonction Vlookup

Bonjour à tous,

J'ai une base de donnée contenant des numéros d'identifiants, prénom client, nom client, adresse etc...

Je possède une liste box aussi qui affiche dans un formulaire les informations dans différentes texbox dès que je selectionne une ligne.

Je cherche à pouvoir modifier cette base de donnée à partir de la liste box à l'aide de la fonction Vlookup. La récherche sera orientée sur l'identifiant (étant unique et propre à chaque client).

Le prénom est dans la 2ème colonne de ma base de donnée, et représente la text box 1 de mon formulaire.

Le nom est dans la 3 ème colonne de ma base de donnée, et représente la textbox 2 de mon formulaire.

A partir de ces deux informations j'ai tenté avec le code vba suivant :

Private Sub BtnModifier_Click()
Sheets("BASE DE DONNEES").Select

If TxtCode = "" Then

MsgBox "Veuillez sélectionner un client !", vbInformation, "ERREUR DE SAISIE"

Exit Sub

Else

If MsgBox("Voulez-vous vraiment modifier ?", vbOKCancel + vbQuestion, "DEMANDE DE CONFIRMATION") = vbOK Then

WorksheetFunction.VLookup(TxtCode.Value, Sheets("Feuil4").Range("A1:I300"), 2, False).Value = TxtPrenom.Value

WorksheetFunction.VLookup(TxtCode.Value, Sheets("Feuil4").Range("A1:I300"), 2, False).Value = TxtNom.Value

MsgBox "Données bien modifiées !", vbInformation, "CONFIRMATION"

Else

Exit Sub

End if

End if

End Sub

- "Feuil4" : ma base de donnée

- Range("A1:I300") : Les plages de données dans ma feuil4

- TxtCode : le numéro d'identifiant pour chaque client affiché dans mon formulaire lors de la sélection d'une ligne dans la liste box.

Désole le fichier est confidentiel je ne peux pas le joindre, j'espère avoir bien détaillé ce que je recherche.

Merci à vous pour vos retours !

Bonjour,

Si j'ai bien compris, le code suivant devrait faire l'affaire :

Private Sub BtnModifier_Click()

Dim Existence as byte
Dim Ligne%

If TxtCode.value = "" Then MsgBox "Veuillez sélectionner un client !", vbCritical, "ERREUR DE SAISIE": Exit Sub 'sortie si vide
If TxtPrenom.value = "" Then MsgBox "Le champ Prénom est vide !", vbCritical, "ERREUR DE SAISIE": Exit Sub 'idem
If TxtNom.value = "" Then MsgBox "Le champ Nom est vide !", vbCritical, "ERREUR DE SAISIE": Exit Sub 'idem

If MsgBox("Voulez-vous vraiment modifier ?" & vbcrlf & vbcrlf & TxtPrenom.value & vbcrlf & TxtNom.value, _
    vbOKCancel + vbQuestion, "DEMANDE DE CONFIRMATION") = vbOK Then

    Existence = application.countif(Range("BDD[Identifiant]"), TxtCode.value) 'compte occurrences de l'identifiant dans BDD
    if Existence = 1 then 'ssi Identifiant apparait 1 fois
        Ligne = application.match(TxtCode.value, Range("BDD[Identifiant]"), 0) 'ligne de l'identifiant
        Range("BDD[Prénom]").cells(Ligne).value = TxtPrenom.Value 'modif prenom sur meme ligne
        Range("BDD[Nom]").cells(Ligne).value = TxtNom.Value 'modif nom sur meme ligne
        MsgBox "Données bien modifiées !", vbInformation, "CONFIRMATION"
    Else 'sinon, si Existence = 0 ou > 1
        Msgbox "Impossible de modifier ce client ! L'identifiant n'existe pas ou existe plusieurs fois...", vbCritical, "ANOMALIE"
    end if

End if

End Sub

Il faudra cependant :
- créer un tableau structuré (la base pour une base): sur Feuil4, sélectionner A1:I300 (votre tableau actuel), aller sur le volet Insertion, Cliquer sur Tableau, garder avec des en-têtes, et renommer ce tableau !
- adapter avec vos propres références (dans mon exemple, le tableau s'appelle BDD et les colonnes Identifiant, Prénom, Nom).

Cordialement,

Bonjour le fil, bonjour le forum,

J'imagine que tu as aussi un bouton Ajouter qui te permet d'ajouter un nouvel élément à ta base. Il va chercher la première ligne vide de la base et rajoute les informations contenues dans tes champs. Tu peux utiliser le même code pour Modifier en remplaçant la première ligne vide de la base par l'index de ta listbox +2 (à adapter selon la ligne où commence ta base). Un petit exemple en pièce jointe. La variable LR (Ligne de Référence) est modifiée si tu cliques dans la ListBox... Regarde aussi la propriété [Tag] de chaque Textbox.

Il y a momentanément un bug pour ajouter un fichier, Service indisponible... Je le mettrai dès que ce sera résolu.

[Édition]

C'est résolu ! Voici le fichier :

Merci à vous pour vos retour c'est parfait !

Rechercher des sujets similaires à "modifier base donnee partir dune listebox fonction vlookup"