Aller à ligne suivante (vierge) [Résolu]

Signaler
Messages postés
91
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
15 mars 2013
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour,

A partir d'un code VB j'écrit des données provenant de text box dans un fichier Excel dèjà crée
 Exemple !

range("A1")=val (textbox1)
range("B1")=val (textbox2)
range ("C1")=val(textbox3)

cela pour un enregistrement,
je souhaite donc aller à la ligne vierge  du document excel considéré (dans ce cas précis :
A2 pour écrire la nouvelle valeur de textbox1, B2 pour textbox2, C2 pour Textbox3)
et ainsi de suite, j'ai max 47 enregistrement à copier vers excel 

Pouvez vous m'aider  
Merci d'avance

5 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Si tu sais d'avance que tu commenceras sur la ligne 1, utilise une variable débutant à 1 et incrémente-la pour chaque ligne à écrire.
i = 1
range("A" & i) = val (textbox1)
range("B" & i) = val (textbox2)
range("C" & i) = val(textbox3)
i = i + 1

le tout dans une boucle bien sûr...

Si tu ne connais pas l'endroit où commencer à inscrire tes données parce qu'il y en a déjà, tu peux utiliser la même variable (ou une autre) pour trouver la première ligne vide. Il existe des tas de méthodes différentes et aussi bonnes les unes que les autres
LastLine = ObjetFeuille.Cells(Rows.Count, "A").End(xlUp).Row + 1
Tu mets le nom de la variable-objet qui pointe vers la feuille (ObjetFeuille) et tu changes la lettre A pour la colonne dont tu veux vérifier le nombre de lignes

MPi
Messages postés
91
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
15 mars 2013

Merci  MPI


la boucle comme ça ?


for  i=1

i = 1
range("A" & i) = val (textbox1)
range("B" & i) = val (textbox2)
range("C" & i) = val(textbox3)

next
i = i + 1


merci de vos réponses
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Non...
En fait ça dépend combien de textbox tu as.

Si tu as 3 textbox que tu remplis et que tu envoies dans Excel puis que tu les remplis à nouveau et que tu envoies à nouveau dans Excel, la boucle n'est pas nécessaire. Un simple bouton suffira et la variable "i" devra s'incrémenter sur Click du bouton

Si tu as plusieurs séries de textbox et que tu veux inscrire tous ces texbox en une fois (3 par ligne), tu devras boucler tous les textbox par groupe de 3 et les envoyer dans Excel... Là, ça peut devenir complexe selon les noms que tu auras donné aux textbox

Cette partie demeure nébuleuse (?)
C'est le 47 enregistrements qui est énigmatique...

MPi
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut LUSTRUCRU
Salut MPi,

la clé de l' énigme est dans :

cela pour un enregistrement,
je souhaite donc aller à la ligne vierge  du document excel considéré (dans ce cas précis :
A2 pour écrire la nouvelle valeur de textbox1, B2 pour textbox2, C2 pour Textbox3)
et ainsi de suite...

Celà suppose alors qu' il n' y a que trois textox qui sont mise à jour
après le passage à un nouvel enregistrement.
Question alors :S' il n' y a que trois textbox, d' ou tirent-ils leurs nouvelles valeurs ?:

Autrement, difficile à mon avis quand on sait qu' on ne peut pas faire une collection
de textbox.Mais peut on le faire avec un tabeau, MPi  ?
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Alors,
soit tu incrémentes la variable i à chaque Click du bouton, et ce i doit être conservé en mémoire

soit tu refais le calcul de dernière ligne à chaque Click
    LastLine = ObjetFeuille .Cells(Rows.Count, "A").End(xlUp).Row + 1
    range("A" & LastLine) = val (textbox1)
    range("B" & LastLine) = val (textbox2)
    range("C" & LastLine) = val(textbox3)

MPi