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.

10test-vba.xlsm (13.94 Ko)

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

11test-vba2.xlsm (39.41 Ko)

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 Sub

Cordialement,

Rechercher des sujets similaires à "vba renseignement donnee fonction"