XL 2010 [RESOLU par Lone-Wolf]remettre curseur en dernière ligne+1 pas au-delà

cathodique

XLDnaute Barbatruc
Bonjour:),

Je pense que tout est dit dans le titre.

Je dois remplir une fiche qui commence en C4 jusqu'à F4.
Je voudrais empêcher la saisie si la cellule sélectionnée est différente de la dernière ligne+1.
exemple: dernière cellule non vide C15 ---> remettre curseur en C16 si ligne> à 16 sélectionnée.

ps: pas très copain avec 'Target'. Si vous voyez ce que je veux dire?!!!

En vous remerciant.
 

Lone-wolf

XLDnaute Barbatruc
Bonjour cath :)

Et avec : ActiveWindow.ScrollRow = derlig + 1

Pour : dernière cellule non vide C15 ---> remettre curseur en C16 si ligne> à 16 sélectionnée.
J'ai du mal à saisir. Si la ligne 16 est sélectionnée, pourquoi mettre le curseur en C16 vu que le curseur il est déjà dessus?? :rolleyes: . Ce n'est pas plutôt si c15 <> "" mettre le curseur en c16?

EDIT: bonjour Bertrand :)

Tu dit ne pas être copain avec target, mais pourtant

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("d2:d10000")) Is Nothing And Target.Count = 1 Then
        If Target.Offset(0, -1) <> "" Then Target.Offset(1, -1).Activate
    End If

    If Not Intersect(Target, Range("c2:c10000")) Is Nothing And Target.Count = 1 Then
        If ActiveCell <> "" Then ActiveCell.Offset(1, 0).Activate
    End If
End Sub
 
Dernière édition:

mutzik

XLDnaute Barbatruc
bonjour,

avec 1145 messages et pas de fichier joint
sinon, on (je) ne laisse jamais mes utilisateurs accéder à ma base
je fais une feuille de saisie + un bouton ajouter
dans la feuille base, je reprends les infos de la feuille 'Saisie'
et le bouton 'ajouter' lance une macro qui prends ces infos et un copier coller valeurs en dessous de la dernière ligne occupée

et le tour est joué
 

cathodique

XLDnaute Barbatruc
Rebonjour dans la joie et la bonne humeur:D

@Lone-wolf: suppose que j'ai effectué une saisie en C15 (ici dernière ligne non vide est 15)
la saisie suivante doit se faire en C16 mais suppose que je mette en C17 ou C18 ou .....Etc
la saisie ne doit être autorisée, d'où je voudrais remettre le curseur en C16 (soit dernière ligne+1)

@mutzik::oops: je me demande si ça nécessite un fichier. le voici.
 

Pièces jointes

  • 11111.xlsm
    9.3 KB · Affichages: 33

Lone-wolf

XLDnaute Barbatruc
Re

Non pas du tout. C'est à force de répétition. J'ai édité mon dernier message, regarde ;)

Suite du précédent message

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("d2:d10000")) Is Nothing And Target.Count = 1 Then
        If Target.Offset(0, -1) <> "" Then Target.Offset(1, -1).Activate
    End If

    If Not Intersect(Target, Range("c2:c10000")) Is Nothing And Target.Count = 1 Then
        If ActiveCell <> "" Then ActiveCell.Offset(1, 0).Activate
            derlig = Range("c" & Rows.Count).End(xlUp).Row
        If ActiveCell = "" Then Application.Goto Cells(derlig + 1, 3)
    End If
End Sub
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Re Lone,
VB:
If Not Intersect(Target, Range("c2:c10000")) Is Nothing And Target.Count = 1 Then
Pour tu rajoutes 'Target.count=1', car j'ai essayé sans cette condition et il semble que ça fonctionne.

Qu'apporte cette condition supplémentaire?

Encore merci.
 

cathodique

XLDnaute Barbatruc
Merci c'est compris. une seule cellule à la fois. Mais dans ce cas, si on veut par exemple insérer une même données dans plusieurs cellules. c-à-d sélectionner plusieurs cellules, écrire et valider avec ctrl+entrée, ça bug?
C'est le cas quelle serait la solution?
Pour mon cas ça ne pose pas de problème, car en colonne C il y a une validation.

Merci beaucoup.

Bonne journée et bon week-end.
 

Statistiques des forums

Discussions
312 160
Messages
2 085 839
Membres
103 001
dernier inscrit
vivinator