Aide pour une débutante en VBA

Bonjour, pour mon travail je dois créer une application excel, et j'en suis pour l'instant à la création d'une base de donnée clients. J'ai 2 problèmes :

- Pour que l'utilisateur puisse ajouter des clients, j'ai créé un formulaire. Les données, saisies dans des textbox, doivent s'inscrire dans la 1ère ligne vide d'une feuille de calcul. J'ai donc utilisé ce code ("NomClient" est le mnémonique de la colonne de destination) :

LigneSuivante=Application.WorksheetFunction.CountA (Range("NomClient"))+2

Cells(LigneSuivante, 2)= Textbox1.Text

Le problème est que lorsque l'utilisateur ne remplit pas tous les champs du formulaire lors d'un enregistrement, l'enregistrement suivant s'inscrit dans la feuille de calcul en décalé puisque la 1ère ligne vide n'est plus la même selon les colonnes.

Comment faire pour que les données correspondant à un même enregistrement s'inscrivent bien sur la même ligne dans ce cas?

- 2ème problème, grâce à un autre formulaire je veux permettre à l'utilisateur de rechercher les données clients (situées dans la feuille de calcul) via la saisie dans une textbox d'un numéro de commande client. Quel code utiliser (dans une macro affectée à un bouton) pour aller chercher ces données dans la feuille et les afficher dans les textbox vides du formulaire?

J'espère que vous pourrez m'aider (et soyez indulgents si mes questions semblent bêtes, je débute ).

Bonjour

Pour déterminer la première ligne libre de ton tableau tu peux utiliser la formule suivante

'Tableau commence en ligne 3 : décaler de 3 lignes d'où le +3 à la fin

LigneSuivante = ThisWorkbook.Worksheets(1).Cells(3, 1).CurrentRegion.Rows.Count + 3

'Puis Remplir la ligne avec les données du formulaire

ThisWorkbook.Worksheets(1).Cells(LigneSuivante, 1) = Champ1DuFormulaire

ThisWorkbook.Worksheets(1).Cells(LigneSuivante, 2) = Champ2DuFormulaire

De même pour rechercher les données

Max = ThisWorkbook.Worksheets(1).Cells(3, 1).CurrentRegion.Rows.Count + 3

Saisie = Textbox1.test 'Valeur saisie par l'utilisateur

Ligne = 3 ' Première ligne du tableau

'Suppose que le numero de commande est en colonne 6

Cde = ThisWorkbook.Worksheets(1).Cells(Ligne, 6)

While Cde <> Saisie And Ligne < Max

Ligne = Ligne + 1

Cde = ThisWorkbook.Worksheets(1).Cells(Ligne, 6)

Wend

If Ligne < Max Then 'le numero de commande saisi par l'utilisateur a été trouvé dans le tableau

Champ1DuFormulaire = ThisWorkbook.Worksheets(1).Cells(Ligne, 1)

Champ2DuFormulaire = ThisWorkbook.Worksheets(1).Cells(Ligne, 2)

........

Else 'Non trouvé

MsgBox "Le numéro de commande saisi n'a pas été trouvé"

End If

Cordialement

Bonjour,

Une autre proposition :

Si ta première colonne est la colonne A comme je peux le voir dans ton code, la première ligne vide peut être trouvée comme suit :

Lignesuivante = Range("A65536").end(xlup).row +1

Essaye de mettre ton fcihier en ligne ce serait plus simple de comprendre ton pb.

A te relire

Dan

Merci beaucoup Demeb, tu as solutionné mon 1er problème, ça a marché du 1er coup ! En revanche, pour le 2ème je n'y arrive toujours pas...

re,

Ce n'est pas évident de t'apporter une réponse qui va cadrer avec ton appli sans voir ton fichier.

Ne peux-tu pas mettre ton fichier en ligne ?

Dan

En fait c'est bon j'ai résolu le problème, merci à tous pour vos réponses.

Rechercher des sujets similaires à "aide debutante vba"