Bouton "Modifier" [Résolu]

Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Dernière intervention
2 juillet 2014
- 11 juin 2014 à 10:16 - Dernière réponse :
Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Derniè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)
Sheets("Véhicules").Cells(vcLig, 1) = TextBox2.Value
Sheets("Véhicules").Cells(vcLig, 2) = TextBox3.Value
Sheets("Véhicules").Cells(vcLig, 3) = TextBox4.Value
Sheets("Véhicules").Cells(vcLig, 4) = TextBox5.Value
Sheets("Véhicules").Cells(vcLig, 5) = TextBox6.Value
Sheets("Véhicules").Cells(vcLig, 6) = TextBox7.Value
Sheets("Véhicules").Cells(vcLig, 7) = TextBox8.Value
Sheets("Véhicules").Cells(vcLig, 8) = TextBox9.Value
Sheets("Véhicules").Cells(vcLig, 9) = TextBox10.Value
Sheets("Véhicules").Cells(vcLig, 10) = TextBox11.Value
Sheets("Véhicules").Cells(vcLig, 11) = TextBox12.Value
Sheets("Véhicules").Cells(vcLig, 12) = TextBox13.Value
Sheets("Véhicules").Cells(vcLig, 13) = TextBox14.Value

Merci d'avance.
Afficher la suite 

Votre réponse

5 réponses

Messages postés
23253
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 11 juin 2014 à 10:31
0
Merci
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 ?



Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Derniè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")


Sheets("Véhicules").Cells(vcLig, 1) = TextBox2.Value
Sheets("Véhicules").Cells(vcLig, 2) = TextBox3.Value
Sheets("Véhicules").Cells(vcLig, 3) = TextBox4.Value
Sheets("Véhicules").Cells(vcLig, 4) = TextBox5.Value
Sheets("Véhicules").Cells(vcLig, 5) = TextBox6.Value
Sheets("Véhicules").Cells(vcLig, 6) = TextBox7.Value
Sheets("Véhicules").Cells(vcLig, 7) = TextBox8.Value
Sheets("Véhicules").Cells(vcLig, 8) = TextBox9.Value
Sheets("Véhicules").Cells(vcLig, 9) = TextBox10.Value
Sheets("Véhicules").Cells(vcLig, 10) = TextBox11.Value
Sheets("Véhicules").Cells(vcLig, 11) = TextBox12.Value
Sheets("Véhicules").Cells(vcLig, 12) = TextBox13.Value
Sheets("Véhicules").Cells(vcLig, 13) = TextBox14.Value

Else
MsgBox ("Aucun résultat trouvé")
End If


End Sub


Ca marche avec les tests que je viens de faire

Merci beaucoup
Commenter la réponse de jordane45
Messages postés
12247
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
2 novembre 2018
- Modifié par pijaku le 11/06/2014 à 11:55
0
Merci
Bonjour,

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


Cordialement,
Franck
Commenter la réponse de pijaku
Messages postés
23253
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 11 juin 2014 à 11:54
0
Merci
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.."

Messages postés
58
Date d'inscription
jeudi 5 juin 2014
Derniè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 !
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.