se déplacer d'une cellule vers la droite puis vers le bas en macro

SANDRA2012

XLDnaute Junior
Bonjour,
Je dois scanner dans un fichier excel et j'aimerais que celui ci se remplisse sans que je click sur les cellules à remplir.
Je scan en B4 ensuite le passe en C4 et j'aimerai passer à la cellule B5 puis C5, B6 puis C6 et ainsi de suite
J'aimerais aussi savoir s'il y a une solution pour verrouiller les cellules une fois qu'elles sont pleines.
Merci d'avance pour votre aide
voici un code que j'ai essayé mais qui ne fonctionne pas correctement

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then Cells(Target.Row + 1, 2).Select
End Sub
 

Philippe Tulliez

XLDnaute Nouveau
Re : se déplacer d'une cellule vers la droite puis vers le bas en macro

Bonjour,
Une solution parmi d'autres.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
  Select Case .Column
   Case 2: .Offset(0, 1).Select
   Case 3: .Offset(1, -1).Select
  End Select
 End With
End Sub
 

laetitia90

XLDnaute Barbatruc
Re : se déplacer d'une cellule vers la droite puis vers le bas en macro

bonjour SANDRA2012 ,Philippe Tulliez:)

essai comme cela

Code:
Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, [b:c]) Is Nothing And T.Count = 1 Then
If T.Column = 2 Then T.Offset(, 1).Select
If T.Column = 3 Then T.Offset(1, -1).Select
End If
End Sub
 

SANDRA2012

XLDnaute Junior
Re : se déplacer d'une cellule vers la droite puis vers le bas en macro

voici le code que j'utilise mais ça ne marche pas

Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, [b:c]) Is Nothing And T.Count = 1 Then
If T.Column = 2 Then T.Offset(, 1).Select
If T.Column = 3 Then T.Offset(1, -1).Select
End If
End Sub

Private Sub Worksheet_Change(ByVal As Range)
ActiveSheet.Unprotect Password:="MP"
Target.Locked = True
ActiveSheet.Protect Password:="MP"
End Sub
 

laetitia90

XLDnaute Barbatruc
Re : se déplacer d'une cellule vers la droite puis vers le bas en macro

re tous :)
essai comme cela ???

Code:
Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, [b:c]) Is Nothing And T.Count = 1 Then
If T.Column = 2 Then T.Offset(, 1).Select
If T.Column = 3 Then T.Offset(1, -1).Select
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal T As Range)
If Not Intersect(T, [b:c]) Is Nothing And T.Count = 1 Then
 If T = "" Then
ActiveSheet.Unprotect Password:="MP"
Else
ActiveSheet.Protect Password:="MP"
End If: End If
End Sub

PS: j'avais pas teste le code de Philippe Tulliez:) il marche egalement & plus simple a voir
 

mutzik

XLDnaute Barbatruc
Re : se déplacer d'une cellule vers la droite puis vers le bas en macro

bonjour à toutes et tous

si vous selectionnez le 'range' à remplir, chaque fois qu'une cellule est remplie et validée par entrée, la selection se déplace en bas puis en haut de la colonne suivante ... sans macro aucune
 

mutzik

XLDnaute Barbatruc
Re : se déplacer d'une cellule vers la droite puis vers le bas en macro

bonjour,

selectionne de B4 à D5
tape une valeur quelconque et entrée pour valider
la cellule active devient B5, puis C4, C5, D4, et D5
après validation de D5, activecell = B4

ce paramètre de déplacement après validation peut être déterminé dans
options / options avancées / options d'édition
- cocher déplacer la sélection après validation
- définir le sens de déplacement
 

SANDRA2012

XLDnaute Junior
Re : se déplacer d'une cellule vers la droite puis vers le bas en macro

bonjour à tous !
Merci pour votre aide, en effet le code de Philippe fonctionne très bien et le code pour verrouiller aussi.
Pour le déplacement des cellules sans macro j'avais déjà essayé mais ce n'était pas le résultats que j'attendais!
Bonne journée
 

SANDRA2012

XLDnaute Junior
Re : se déplacer d'une cellule vers la droite puis vers le bas en macro

Je voulais verrouiller sur une autre feuille avec le même code mais une ligne me bloque quelqu'un peut m'expliquer pourquoi?
Merci d'avance

Private Sub Worksheet_SelectionChange(ByVal T As Range)
If Target.Address <> "$E$4" Then Exit Sub
If Target = "" Then Exit Sub
numLigne = Application.Match(Target, [A:A], 0)
If IsNumeric(numLigne) Then Cells(numLigne, 3) = Cells(numLigne, 3) + 1

Range("E4").Select
Application.CutCopyMode = False
Selection.Copy
Range("R2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("CYCLE").Range("E4:Q22").ClearContents
Target.Activate
End Sub

Private Sub Worksheet_SelectionChange(ByVal T As Range)
If Not Intersect(T, [b:c]) Is Nothing And T.Count = 1 Then
If T = "" Then
ActiveSheet.Unprotect Password:="CYCLE"
Else
ActiveSheet.Protect Password:="CYCLE"
End If: End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 014
Membres
103 699
dernier inscrit
samSam31