[VBA/Excel] Instructions multiples

Fermé
Gilou - 3 févr. 2011 à 21:17
 Gilou - 4 févr. 2011 à 10:33
Bonsoir,

Je suis en train de constituer un dossier excel avec Visual Basic mais je galère avec les instructions If...Then ; Do...Until et Empty.
Je souhaite faire rentrer la date du jour dans une cellule, et si la cellule n'est pas vide, dans celle du dessus et ainsi de suite.

J'ai donc essayé d'écrire un code du genre :
-Sélectionner G3,
-Si G3 n'est pas vide, passer à la cellule en dessous,
-Répéter jusqu'à la prochaine cellule vide.

Le bouquin que j'ai acheté me semble pas très bien fichu. Quelqu'un pourrait m'aider avec ces commandes ?
Et si quelqu'un connait un bon guide pour les instructions VBA, je suis preneur.

Merci
Gilou
A voir également:

4 réponses

Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
Modifié par Mike-31 le 3/02/2011 à 23:00
Salut,

Tout simple, si en partant de la cellule G1, n'as pas de cellule vide tu peux partir du haut avec ce code

Range("G1").End(xlDown).Offset(1, 0) = Date

Mais je te conseille à l'inverse de partir du bas avec ce code

Range("G65536").End(xlUp).Offset(1, 0) = Date

le code peut encore être simplifié
[G65536].End(xlUp).Offset(1, 0) = Date

ou plus complexe on crée une boucle à partir de la cellule G3 et on recherche la première cellule non vide pour insérer la date

Sub InsertDate()
Range("G3").Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
Selection = Date
End Sub

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
3 févr. 2011 à 23:15
je viens de relire ta demande "et si la cellule n'est pas vide, dans celle du dessus"
dans cas soit

[G65536].End(xlUp).Offset(2, 0) = Date

ou dans la boucle

Range("G3").Select
Do While ActiveCell <> "" And ActiveCell.Offset(2, 0) <> ""
ActiveCell.Offset(2, 0).Select
Loop
ActiveCell.Offset(2, 0) = Date
0
Merci
Il doit manquer une ligne mais ça m'avance pas mal
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
4 févr. 2011 à 10:00
Re,

Si j'ai bien compris ta question, tu veux mettre dans la première cellule vide la date
Ce code suffit

Sub InsertDate()
[G65536].End(xlUp).Offset(1, 0) = Date
End Sub

ou faire une boucle


Sub InsertDate()
Range("G3").Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
Selection = Date
End Sub

et si tu veux sauter une case

Sub InsertDate()
[G65536].End(xlUp).Offset(2, 0) = Date
End Sub

ou sur une boucle

Sub InsertDate()
Range("G3").Select
Do While ActiveCell <> "" And ActiveCell.Offset(2, 0) <> ""
ActiveCell.Offset(2, 0).Select
Loop
ActiveCell.Offset(2, 0) = Date
End Sub
0
En fait j'ai trouvé une alternative sans If, While et Loop.

Merci
0