Vba : insérer du texte dans une cellule vide [Fermé]

Signaler
Messages postés
2
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
6 avril 2007
-
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
-
Coucou!!
Je suis en train de faire une macro sous excel et je ne sais pas comment structurer une des boucles pour qu'elle renvoi l'information saisi dans une cellule vide.
En gros je voudrais faire un truc du style:

Si la cellule n'est pas vide
Alors faire cellule +1
Sinon écrire dans la cellule

Serait il possible de m'aider svp!! je galère!!
biz

13 réponses

Messages postés
232
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
12 juin 2007
172
Salut,

tu peux faire un truc du genre:

For i = 1 To 10
If Cells (i,1).Value="" Then Cells(i,1).Value="cequetuveux"
Next i

Ca devrait t'écrire "cequetuveux" dans les cases vides des 10 premières lignes de la première colonne...

A adapter à tes besoins... ;-)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Bonjour,

Et si dans le meme cas, on ne veut ecrire QUE sur la première ligne non vide?

Ciao
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
36
Bonjour arno,

Peux tu préciser ce que tu veux faire ?
Tu veux, comme l0ul0ute, vérifier que la cellule est vide, et écrire un texte sur le première ligne de la colonne ?
Dis moi précisement ce que tu veux, et vu que j'ai un peu de temps aujourd'hui je te fais ça... ;)
à bientot
Teteve
Putain c'est génial ça répond super vite sur ce forum!!!
Merci d'avance teteve

Voila le problème:
Les lignes 16 à 29 sont initiallement vides. J'ai créé un bouton+une userform pour les remplir une par une. Je m'xplique :
Je clique sur mon bouton, je rempli mes deux champs de userform et alors le programme rempli automatiquement les cellules (i,1) et (i,2)
Le problème c'est qu'avec le code si dessous, je rempli toutes les lignes de 16 à 29. Je n'arrive pas à arrêter ma boucle dès que le première ligne vide est trouvé!
Merci pour ton aide. Si tu veux plus de détail, je reste à l'affut sur le forum


For i = 16 To 29
If Sheets(1).Cells(i, 1) <> "" Then
i = i + 1
Else
'Ajout texte
Sheets(1).Cells(i, 1) = UserForm2.TextBox1
Sheets(1).Cells(i, 2) = UserForm2.TextBox2

End If
Next i
Je précise ce que je veux faire en "français"

Si la cellule n'est pas vide
Alors faire cellule +1
Sinon écrire dans la cellule (et uniquement celle là, pas les suivantes)
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
36
Allez c'est parti...
Ca ne fait que 1 an et demi que je n'ai pas touché à du VBA...
Mais ça va faire du bien de s'y remettre un peu...
Bon, vu mon état ce matin, je promets rien au niveau des délais et de la bonne compréhension du problème... :-D
@ ++
Teteve
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
36
Bon, j'précise de suite si des personnes plus calées que moi lisent ce chtit bout de code : j'ai toujours eu la mauvaise manie de pas faire au plus simple, voire même jamais comme ce que feraient tout le monde... Mais ça marche quand même ;)

i = 16
Do While (Sheets(1).Cells(i, 1) <> "") And (i <= 29)
i = i + 1
Loop

Sheets(1).Cells(i, 1) = UserForm2.TextBox1
Sheets(1).Cells(i, 2) = UserForm2.TextBox2

Voilà... Dis moi si ça te va... En français, mon raisonnement a été le suivant :
Je pars de i = 16
Tant que le contenu de la cellule (i,1) n'est pas vide et que i est inférieur à 29 (la limite), alors on passe à la ligne d'après
Dès que c'est bon, on écrit dans la cellule vide concernée...
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
36
petite correction : je viens de tester pour la 29ème ligne (je sais, j'ai eu la flemme de le faire avant, et dans un excès de mauvaise conscience j'ai essayé...)

[...] And (i < 29)

Il faut enlever le "=" sinon il écrit dans le 30ème ligne si toutes les lignes de 16 à 29 sont pleines
C'est presque bon! En tout cas c'est mieux que moi!
Mais ya toujours 2 pti problèmes :

1) Ca n'écrit que sur la ligne 17 et pas sur la 16
2) Si je répète l'opération, ça remplace la ligne que je viens de remplir au lieu de remplir la ligne dessous

Merci de ton aide
J'avais peut etre pas précisé mais je veux que ma feuille excel se remplisse ligne par ligne, sans remplacer les ligne que l'on ajoute une par une.
Exemple : on rempli la ligne 16 avec la macro alors si on répète l'opération, la ligne qui doit se remplir alors est la 17
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
36
hum...
Moi ca écrit sur la ligne 16 et a chaque fois que je le relance il ecrit bien sur la ligne suivante.
Envoie moi tout ton code stp (userform + module associé) que je comprenne nos différences.

de rien pour l'aide, il m'est arrivé de trouvé une bonne aide ici quand j'avais besoin, donc de temps en temps j'essaye de voir ce que je peux faire, même si je n'atteints pas le niveau de la plupart des helpeurs habituels...
OUPS! Pardon pardon pardon de pourir ce forum.
En fait, ton programme marche très bien. C'est moi qui ai mal recopié!
DESOLE ET MERCI BCP TETEVE!
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
36
De rien ;)
N'hésite pas à revenir si besoin :)
Je ne peux que t'encourager à aller chercher quelques tutos sur le net sur le VB et VBA, c'est mine de rien un langage que j'aime bien de part sa facilité et les objets qu'il manipule (tout ce qui est Microsoft... :) )
Teteve