[déplacé VB.NET -> VBA] passer à la ligne suivante si la ligne est remplie

ttedd Messages postés 6 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 29 mars 2010 - 11 mars 2010 à 11:05
ttedd Messages postés 6 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 29 mars 2010 - 29 mars 2010 à 18:03
Bonjour,

Je débute en Visual Basic et après de nombreuses recherches qui n'ont pas aboutis, je me décide à poser ma question.
Je suis en train de faire un fichier Excel avec macros qui a pour but, via une boite de dialogue, de remplir toute une ligne de données sur une feuille excel grâce à une saisie préalable dans la boite de dialogue.

Mon problème est simple: quel code /formule faut-il utiliser pour que lorsque je fais une 2ème saisie via ma boite de dialogue, mes données de 2ème saisie ne remplacent pas mes données de 1ère saisie.
Autrement dit que les données de ma 2ème saisie se retrouvent une ligne en dessous de ma 1ère saisie et ainsi de suite pour les autres saisies.

En espérant m'être fait comprendre.

Cordialement

8 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
11 mars 2010 à 11:41
Bonjour

pour connaitre le numéro de la derniere ligne remplie

Selection.End(xlDown).Select
derniereligne = ActiveCell.Row
0
ttedd Messages postés 6 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 29 mars 2010
11 mars 2010 à 11:55
Tout d'abord merci de votre réponse si rapide.
Pourriez vous être plus explicite.
Comme je l'indiquais, je débute.

""Selection.End(xlDown).Select
derniereligne = ActiveCell.Row""

1) J'ai une ligne d'entête dans ma feuille Excel, comment sait-il que la dernière ligne remplie n'est pas celle-ci.
2 )De plus que dois je remplacer dans cette formule ?
3) "derniereligne" correspond déjà à une variable ou dois-je la déclarer ?
4) A quoi correspond "xl down"
4) Ne dois-je pas utiliser de compteur (j'ai entendu parler de "i" et "j" pour les lignes et colonnes :"i=i+1") ?

Merci d'avance.
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
11 mars 2010 à 12:09
1) on peut ecrire à partir de (derniereligne+1)
2) ActiveSheet.Cells(derniereligne+1,1)= form1.Text1.text
3)en VBA les déclarations ne sont pas obligatoire mais on ne peux que conseiller de faire toutes les déclarations
Dim derniereligne as Integer
4) xlDown correspond à une constante excel pour voir à quoi elle correspond
MsgBox Cint(xlDown) affichera la constante
5) oui i et j c'est bien mais moi je prefére
Dim iLig as Integer
Dim iCol as Integer
Je touve que c'est plus lisible
0
ttedd Messages postés 6 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 29 mars 2010
16 mars 2010 à 12:38
Bonjour,

Après beaucoup de manipulations, je n'arrive toujours pas à résoudre mon 1er problème.
Je ne sais pas par quel bout commencer.

D'autre part, j'ai une autre demande. Je voudrais savoir quel code doit être utilisé pour qu'en fonction d'une cellule dans une colonne déterminée mais située sur une ligne quelconque, il aille regarder dans une autre cellule de la même ligne pour comparer une valeur.

Merci pour vos réponses.


Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alexandrevandenberghe Messages postés 149 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 16 juillet 2013 6
16 mars 2010 à 15:25
Bonjour, peux tu nous donner le code que tu utilise actuellement? Cela nous permettrai de mieux t'orienter pour ton premier probleme... Pour ton deuxieme probleme, il y a une fonction existante dans Excel RECHERCHEV(...) qui si j'ai bien compris correspond parfaitement à ta demande.

Cordialement.
0
ttedd Messages postés 6 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 29 mars 2010
17 mars 2010 à 17:18
Bonjour,

Tout d'abord merci pour votre aide.

1er problème

Voici le code que j'utilise :

Panneau = Sheets("dialogue1").DrawingObjects("Panneau").Text
Sheets("Récapitulatif").Cells(9, 3) = Panneau

Quantité = Sheets("dialogue1").DrawingObjects("Quantité").Text
Sheets("Récapitulatif").Cells(9, 5) = Quantité

Hauteur = Sheets("dialogue1").DrawingObjects("Hauteur").Text
Sheets("Récapitulatif").Cells(9, 6) = Hauteur

Largeur = Sheets("dialogue1").DrawingObjects("Largeur").Text
Sheets("Récapitulatif").Cells(9, 7) = Largeur

Remarque = Sheets("dialogue1").DrawingObjects("Remarque").Text
Sheets("Récapitulatif").Cells(9, 11) = Remarque

Je pense qu'il doit y avoir des "i+1" ou autre quelque part mais je ne sais pas ou.

2ème problème

J'ai essayé d'utiliser cette fonction mais sans succès (erreur d'éxécution 438 :propriété ou méthode non géré par l'objet.

Hauteur7 = WorksheetFunction.VLookup(Panneau, (ActiveSheet.Sheets("Saisie").Range(Cells(3, 6), Cells(442, 17))), 6, 0)

Peut etre faut il préalablement déclarer "Hauteur7" ?

D'avance merci.
0
ttedd Messages postés 6 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 29 mars 2010
21 mars 2010 à 19:45
Bonjour,

Je vous relance concernant mes demandes : quelqu'un pourrait-il m'aider à résoudre mes problèmes ?

Merci d'avance.
0
ttedd Messages postés 6 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 18:03
Bonjour,
J'ai résolu la plupart de mes problèmes.
Voyez-vous une erreur dans la ligne de code suivante ?
Sachant que :
- la valeur contenue dans [ Sheets("Récapitulatif").Range("C7").Value ] est une chaine de lettre et une chaine de chiffre (exemple : BASIC 258 PRIMA)
- la valeur contenue dans [ Sheets("Panneau FRAGER").Range("AR4").Value ]est un nombre.
- j'ai classé par ordre alphabétique ma plage de cellules



Sheets("Panneau FRAGER").Range("AR4").Value = Application.VLookup(Sheets("Récapitulatif").Range("C7").Value, Range("H1:S427"), 7, True)

Merci d'avance.
0