SandraMt
Messages postés58Date d'inscriptionjeudi 5 juin 2014StatutMembreDernière intervention 2 juillet 2014
-
11 juin 2014 à 10:16
SandraMt
Messages postés58Date d'inscriptionjeudi 5 juin 2014StatutMembreDernière intervention 2 juillet 2014
-
11 juin 2014 à 15:47
Bonjour,
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)
jordane45
Messages postés37515Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention31 mai 2023341 11 juin 2014 à 10:31
Bonjour,
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 ?
SandraMt
Messages postés58Date d'inscriptionjeudi 5 juin 2014StatutMembreDernière intervention 2 juillet 2014 11 juin 2014 à 10:43
J'avais fait une petite faute dans la sélection du bouton !
Voila les lignes que j'ai faites
Private Sub CommandButton2_Click()
Dim recherche As Boolean recherche = cherchC("Véhicules", TextBox1.Value)
If recherche = True Then MsgBox ("Modification réussie")
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
jordane45
Messages postés37515Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention31 mai 2023341 11 juin 2014 à 11:54
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.."
SandraMt
Messages postés58Date d'inscriptionjeudi 5 juin 2014StatutMembreDernière intervention 2 juillet 2014 11 juin 2014 à 15:47
Merci Jordane45 !
C'est clair que de renommer les TextBox facilite la lecture, j'aurais mieux fait d'y penser avant !
11 juin 2014 à 10:43
Voila les lignes que j'ai faites
Ca marche avec les tests que je viens de faire
Merci beaucoup