cs_mistygirl
Messages postés4Date d'inscriptiondimanche 25 mai 2008StatutMembreDernière intervention 6 juin 2008
-
25 mai 2008 à 17:35
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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) :
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 ).
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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