Rechercher : dans
Par :

Vba : insérer du texte dans une cellule vide

Dernière réponse le 4 sep 2007 à 11:51:19 l0ul0ute, le 6 avr 2007 à 10:46:16 
 Signaler ce message aux modérateurs

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

1

xjl, le 6 avr 2007 à 11:17:42

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... ;-)

Répondre à xjl

2

Arno, le 4 sep 2007 à 10:43:13

Bonjour,

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

Ciao

Répondre à Arno

3

teteve, le 4 sep 2007 à 10:46:31

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 " Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve

4

Arno, le 4 sep 2007 à 11:04:27

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

Répondre à Arno

5

Arno, le 4 sep 2007 à 11:07:53

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)

Répondre à Arno

6

teteve, le 4 sep 2007 à 11:12:56

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 " Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve

7

teteve, le 4 sep 2007 à 11:29:11

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...
" Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve

8

teteve, le 4 sep 2007 à 11:33:29

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
" Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve

9

Arno, le 4 sep 2007 à 11:35:32

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

Répondre à Arno

10

Arno, le 4 sep 2007 à 11:41:37

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

Répondre à Arno

11

teteve, le 4 sep 2007 à 11:44:23

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...
" Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve

12

Arno, le 4 sep 2007 à 11:44:25

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!

Répondre à Arno

13

 teteve, le 4 sep 2007 à 11:51:19

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 " Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve
Collection CommentÇaMarche.net