Problème de débutante (formulaires)

Résolu
cs_mistygirl Messages postés 4 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 6 juin 2008 - 25 mai 2008 à 17:35
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 30 mai 2008 à 00:56
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  ).

3 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 mai 2008 à 01:26
salut,

pour ton premier problème, y'-til une colonne dont la valeur est toujours renseignées ?
Par exemple, si Numéro de commande est obligatoire, et que ces numéros ce trouvent dans la colonne A, tu fais un
LigneSuivante = Range("A65536").end(xlUp).Row + 1

Pour ton second problème, pareil, restant sur l'exemple de la colonne A pour tes numéros de commande :

    dim i as integer

for i = 2 to LigneSuivante - 1
    if cstr(Cells(i, 1).Value) = TextBoxRecherche.Text then
       TextBoxIntituléCommande.Text = Cells(i, 2).Value
       TextBoxAcheteur.Text = Cells(i, 3).Value
       TextBoxDateCommande.Text = cstr(Cells(i, 4).Value)
       'etc..
       Exit for
    end if
next i

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
3
cs_mistygirl Messages postés 4 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 6 juin 2008
26 mai 2008 à 21:06
J'ai finalement réussi à solutionner le 1er problème, mais j'essaye dès demain ta proposition pour le 2ème.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 mai 2008 à 00:56
Et si tu ne peux jamais savoir quelle colonne contient toujours des données, tu peux essayer comme ceci, en autant que la feuille contienne au moins une donnée

Dim LigneVide As Long
LigneVide = ActiveSheet.Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row + 1
Msgbox LigneVide

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous