J’aimerais faire en sorte que lorsque j’ouvre mon fichier excel, la cellule selectionné est la cellule B8.
Je veux ensuite la remplir puis, quand je clic sur “Enter” pour valider mon texte, c’est la cellule C5 qui ce selectionne.
Une fois remplis et validé par “Entrer”, ce sera alors la cellule D7 qui sera selectionnée (et ainsi de suite).
Quelqu’un aurai une solution ? Je pense qu’en Macro c’est faisable mais sans certitude.
Si tu n’as pas de trop de cas à traiter, tu peux faire directement par macro.
Ca va te donner quelque chose du genre :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Range("B7").Select
ElseIf Target.Address = "$B$7" Then
Range("C8").Select
ElseIf Target.Address = "$C$8" Then
Range("D9").Select
....
Else
Range("A1").Select
End If
End Sub
Si tu en as beaucoup, il est plus intéressant de passer par une table intermédiaire, soit dans le code, soit dans une feuille excel annexe
Merci gcc ta méthode fonctionne bien sauf pour un petit détails. Si je ne vais pas dans la cellule pour l’editer et donc que je n’ai que la sélection dessus, le code ne ce lance pas.
Je m’explique : on commence avec la cellule A1 de sélectionné, si on a rien à mettre dans cette cellule, on clic donc sur entré mais comme ne ne somme pas “entré” dans la cellule pour la modifier, le code ne ce lance pas.
Si tu veux une action à la perte du focus, ce n’est plus l’évènement Change() qu’il faut utiliser, c’est Selectionchange()
Message edité le 26/04/2012 à 15:47
Private Sub Worksheet_Selectionchange(ByVal Target As Range)
If Target.Address = "$A$1" Then
Range("B7").Select
ElseIf Target.Address = "$B$7" Then
Range("C8").Select
ElseIf Target.Address = "$C$8" Then
Range("D9").Select
Else
Range("A1").Select
End If
End Sub
1ère problème : Quand j’ouvre mon fichier je suis directement sur D9.
2ème problème : Si je valide une case, par exemple B7 la sélection va directement à D9 quelle que soit la case. En faite il passe dans tout le code à chaque fois que la case change même automatiquement donc forcement il va jusquà la fin du code qui le met à la dernière case. Je vais voir si je trouve une solution pour éviter ça mais on s’approche du but voulu !
Je pense qu’il faut rajouter des conditions ou quelque chose pour qu’il ne tourne pas dans toutes les boucles
Je précise bien ce que j'aimerais avoir en utilisation :
Si j’ouvre le fichier je suis sur A1.
Si je clic sur entrée, que j’ai modifié ou pas A1, je me retrouve sur B7.
Si je clic sur entrée, que j’ai modifié ou pas B7, je me retrouve sur C8.
Si je clic sur entrée, que j’ai modifié ou pas C8, je me retrouve sur D9.
Si je clic sur entrée, que j’ai modifié ou pas D9, je me retrouve sur A1.
Tout ceci pour accélérer le remplissage des tableaux.
Sinon on peut détourner un peu le problème en laissant change mais en mettant, a la place de Range(“B7”).Select, quelque chose qui rentre directement dans la cellule (Avec le petit trait de sélection) et qui ne fait pas que la sélectionner (l’encadrer). Tu vois ce que je veux dire ?
Private Sub Workbook_Open()
Range("A1").Select
End Sub
Tu peux essayer ceci dans ta feuille :
Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$A$1", "$B$7", "$C$8", "$D$9"
ActiveCell.Select
Case "$A$2"
Range("B7").Select
Case "$B$8"
Range("C8").Select
Case "$C$9"
Range("D9").Select
Case Else
Range("A1").Select
End Select
End Sub