De A7 au point suivant

Résolu
Bonjour,
je voudrais faire une macro je pense que on peut pas faire autrement que
quand je clique sur A7 je me déplace vers la première cellule en ligne 7 qui soit pleine et ainsi de suite A8,A9 etc.
merci de votre aide
a bientôt

1 réponse

  1. Contributeur
    Bonsoir,

    Tu ne pourras plus écrire dans A7:Axxx.
    J'ai donc ajouté un case à cocher sur la feuille pour activer/désactiver le traitement. Sa cellule liée est A2.
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If [A2] = False Then Exit Sub
        If Target.Count > 1 Then Exit Sub
        If Target.Column > 1 Or Target.Row < 7 Then Exit Sub
        If Application.CountA(Rows(Target.Row)) - Application.CountA(Cells(Target.Row, 1)) = 0 Then Exit Sub
        Application.EnableEvents = False
        If Target.Offset(, 1) = "" Then
            Target.End(xlToRight).Select
        Else
            Target.Offset(, 1).Select
        End If
        Application.EnableEvents = True
    End Sub 

    https://www.cjoint.com/?DCbxNDS71gK

    eric
    0
    1. merci
      ca marche bien
      mais peut on inclure les suivantes c a dire si je ré clique ça me renvoi à la case suivante pleine ?
      merci
      0
    2. Contributeur
      Bonjour,

      Tu ne pouvais pas le demander tout de suite ? Ca oblige à reprendre toute la logique.
      Au 430ème post tu devrais savoir rédiger une demande complète et claire...
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          Static savRange As Range
          If [A2] = False Then Exit Sub
          If Target.Count > 1 Then Exit Sub
          If Target.Column > 1 Or Target.Row < 7 Then Exit Sub
          If savRange Is Nothing Then Set savRange = Target
          If Target.Row <> savRange.Row Then Set savRange = Target
          Application.EnableEvents = False
          If Application.CountA(savRange.Offset(, 1).Resize(, Columns.Count - savRange.Column)) = 0 Then
              savRange.Select
              Application.EnableEvents = True
              Exit Sub
          End If
          If savRange.Offset(, 1) = "" Then
              savRange.End(xlToRight).Select
          Else
              savRange.Offset(, 1).Select
          End If
          Set savRange = ActiveCell
          Application.EnableEvents = True
      End Sub

      eric
      0
    3. bonjour
      excuse moi tu as complétement raison mais l'idée m 'est venue en l'essayant en fait
      merci de ton aide précieuse bonne journée
      a bientôt
      0