VBA renseignement d'une donnée en fonction d'une autre
Bonjour à tous,
je me permets de réclamer un peu d'aide car je débute en VBA et j'aimerais automatiser une action sur un formulaire.
Ma base de données concerne des points de récupération de marchandise considérés comme des clients. Les clients attribués à des tournées de récupération de marchandise, désigné par un nom de tournée.
Je voudrais pouvoir rentrer dans une case un nom de tournée et dédier une autre case à un nom de conducteur. Par cela je voudrais qu'en appuyant sur un bouton, l'application affiche le nom d'un conducteur sur une case en fonction du numéro d'une tournée préalablement renseigné et pouvoir le mettre à jour facilement.
Je ne sais pas si j'ai été très clair, mais je vous remercie d'avance du temps que vous accorderez à ma demande.
Merci
Bonjour,
Il faudrait que tu postes le classeur, qu'on puisse voir ton formulaire et l'agencement de tes données.
Daniel
Voilà un exemple de ma BDD avec le format que je voudrais afficher sur mon formulaire.
Je voudrais renseigner un "Nom route" dans le texte box 1, que pour toutes les lignes ayant ce nom route renseigné dans la feuille BDD, affiche le "Driver" renseigner dans le Text Box 2 sur la colonne O en appuyant sur le bouton du formulaire.
Je vous joins le fichier exemple.
Bonjour AntoineBNTT, le forum,
Une proposition......à tester...
Cordialement,
Merci xorsankukai pour ta réponse.
Je viens d'essayer tes commandes sur mon fichier de base mais ça coince avec mon formulaire.
Je te joins un fichier bcp plus proche de celui que j'utilise, avec le formulaire complet.
Pourrais-tu y jeter un coup d'œil pour que je puisse utiliser tes commandes ?
à terme je souhaite pouvoir avoir toutes les commandes sur le même formulaire et afficher ce formulaire sur une feuille dédiée.
Je te remercie grandement pour l'aide que tu m'a
pportes.
Re,
Merci pour le retour,
Je viens d'essayer tes commandes sur mon fichier de base mais ça coince avec mon formulaire.
J'avais oublié de préciser que j'avais mis tes données sous forme de tableau structuré(ListObject)....donc pour que le code fonctionne, il faut que tu ais un tableau.
Essaie donc ainsi (sans tableau) :
Private Sub MAJDRIVER_Click()
Dim lig%, route, dl%
With Sheets("BDD") '......................................agit sur cette feuille
dl = .Range("A" & Rows.Count).End(xlUp).Row '............dernière ligne de la feuille, colonne A
'si la dernière ligne est 1, message + on quitte car pas de route renseignée en colonne A
If dl = 1 Then MsgBox "Aucune route dans la base", vbExclamation: Exit Sub
If NOMROUTE = "" Then '.................................si textbox vide
MsgBox "Veuillez saisir une route", vbExclamation '....message
NOMROUTE.SetFocus: Exit Sub '..........................revient sur la textbox,quitte la procédure
End If
With .Range("A2:A" & dl) '...............................sur la plage A2:A et dernière ligne
Set route = .Find(NOMROUTE.Value, lookat:=xlWhole) '.....on cherche NOMROUTE dans la colonne A
If route Is Nothing Then '..............................si on ne la trouve pas
MsgBox "Route inconnue", vbExclamation '...............message
NOMROUTE.SetFocus: Exit Sub '..........................revient sur la textbox,quitte la procédure
End If
End With
If NOMDRIVER = "" Then '...............................si textbox vide
MsgBox "Veuillez saisir un driver", vbExclamation '.....message
NOMDRIVER.SetFocus: Exit Sub '..........................revient sur la textbox,quitte la procédure
End If
For lig = 1 To dl '.....................................boucle sur les lignes (de 1 à la dernière)
'si la valeur en colonne A correspond à NOMROUTE, on écrit la valeur de NOMDRIVER en colonne Q, sur la même ligne
If .Range("A" & lig) Like NOMROUTE.Value Then .Range("Q" & lig) = NOMDRIVER.Value
Next lig '..............................................ligne suivante
End With
'message de confirmation (facultatif)==> Chr(10)=saut à la ligne
MsgBox "Driver " & NOMDRIVER.Value & Chr(10) & "enregistré" & Chr(10) & "pour la route " & NOMROUTE.Value, vbInformation
End SubCordialement,