[VBA/Excel] Instructions multiples

Gilou -  
 Gilou -
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

4 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      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
  2. Gilou
     
    Merci
    Il doit manquer une ligne mais ça m'avance pas mal
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  4. Gilou
     
    En fait j'ai trouvé une alternative sans If, While et Loop.

    Merci
    0