J'ai créé une BDD pour les véhicules de mon entreprise.
J'ai un Userform "ModificationVéhicule" destiné à rechercher un véhicule grâce à son immatriculation. Une fois le véhicule trouvé toutes les informations apparaissent dans les TextBox correspondant.
Je voudrais à l'aide du bouton "Modifier" pouvoir modifier les champs qui seront alors changés dans mon fichier excel
Le bouton Modifier doit donc avoir pour fonction "modifier et enregistrer"
Suite à la modification un message doit avoir pour but de "confirmer" la modification.
Comment dois-je m'y prendre ?
Je pensais faire les lignes suivantes (mais ca ne modifie pas les lignes execel)
As tu essayé de lancer ta macro en mode pas à pas .. pour voir ce que valent tes différentes variables ???
Par exemple... que vaut "vcLig" au moment où tu cliques sur ton bouton ?
juste pour les tests.. tu peux toujours ajouter une petite msgbox histoire de voir...
Sheets("Véhicules").Cells(vcLig, 1) = TextBox2.Value
Msgbox "Ligne = " & vcLig & " TextBox2 = " & TextBox2.value
'... le reste de ton code
Et juste pour être sûr :
Tes lignes de code... tu les as mises où dans ton programme ?
Dans la sub du bouton ?
Tu peux nous montrer la macro (du bouton) complète ?
Rien à voir avec la question, mais un petit complément d'info pour SandraMt.
Lorsque tu "transfères" des données comme tu le fais, dans des colonnes qui se "suivent", à partir de textbox dont les noms comportent des numéros qui se "suivent" également, tu peux aisément utiliser une boucle. Tu auras ainsi gagné en nombre de lignes de code. Méthode de fainéant, mais bon à signaler tout de même...
Ainsi ta procédure pourrait s'écrire :
Private Sub CommandButton2_Click()
Dim bytInd As Byte
Dim recherche As Boolean
recherche = cherchC("Véhicules", TextBox1.Value)
If recherche = True Then
MsgBox ("Modification réussie")
For bytInd = 1 To 13
Sheets("Véhicules").Cells(vcLig, bytInd) = Me.Controls("TextBox" & bytInd + 1).Value
Next
Else
MsgBox ("Aucun résultat trouvé")
End If
End Sub
Au cas où ... pour éviter d'avoir à Relancer la recherche ..a chacune de tes opérations ( Afficher / Modifier...)
Tu peux mettre une textbox ( chachée => visible = false) dans ton Userform qui récupère le N° de ligne lors de l'affichage des données.
En gros :
1 - Tu recherche l'Immatriculation dans ton fichier Excel.
2 - Tu affiches dans ton Userform les différentes valeurs ( en fonction du Numéro de ligne obtenu par la recherche)
2 bis - Tu stocke dans ta userform ce Numéro de ligne (dans une textbox)
3 - Ensuite pour la Mise à jour... tu récupère ce numéro de ligne directement... puis tu t'en sert pour écrire dans tes cellules Excel...
rivate Sub CommandButton2_Click()
Dim numLigne as integer
numLigne = me.TextBox20.value ' à remplacer par LA textbox qui contient le numero de ligne
If numLigne >0 and numLigne <>"" Then
Sheets("Véhicules").Cells(numLigne , 1) = TextBox2.Value
Sheets("Véhicules").Cells(numLigne , 2) = TextBox3.Value
Sheets("Véhicules").Cells(numLigne , 3) = TextBox4.Value
Sheets("Véhicules").Cells(numLigne , 4) = TextBox5.Value
Sheets("Véhicules").Cells(numLigne , 5) = TextBox6.Value
' .....
PS: pense que tu peux "nommer" tes textbox.
Cela rend la lecture du code plus simple et surtout ça te permet de savoir lorsque tu es dans ton code à quoi elles correspondent....
par exemple :
et donc pour l'utiliser :
' comme pour une textbox "normale"
TNumLigne.Value = "ceci est ma valeur.."
Voila les lignes que j'ai faites
Ca marche avec les tests que je viens de faire
Merci beaucoup