Bonjour,
J'ai cherché, et pas trouvé, une solution pour passer le curseur de n'importe quelle cellule à la première cellule vide de la colonne B.
Auriez-vous une solution ?
Merci.
Impolitis
Bonjour,
J'ai cherché, et pas trouvé, une solution pour passer le curseur de n'importe quelle cellule à la première cellule vide de la colonne B.
Auriez-vous une solution ?
Merci.
Impolitis
Bonsoir,
Je ne comprends pas très bien ce que tu souhaites.
Est-ce après avoir fait une validation dans n'importe quelle cellule de la feuille que tu veux que le focus soit donné sur la première cellule vide de la colonne B ou bien est-ce au moment où tu sélectionnes la feuille ou bien encore autre chose ?
Oui, il est vrai que j'aurais dû être plus clair.
Je travaille sur une feuille qui me sert de dictionnaire multilingue. Il se peut que je sois amené à faire des modifications dans une quelconque des cellules de la feuille, et ensuite je dois retourner à ma cellule de départ de saisie, la première cellule vide de la colonne B.
Ma feuille est très grande et cela devient de plus en plus pénible.
J'ai essayé avec des formules pour calculer cette case, ou avec une macro, mais bien sûr, cela ne va pas.
Je ne sais d'ailleurs pas si cela est possible.
Merci en tout cas.
Bonsoir,
comment est élaborée ta colonne B ? la première cellule vide, littéralement est logiquement la première qui ne contient pas de données, je m'explique :
si tu as une entete en B1, rien en B2, des valeurs de B3 à B50, la première cellule vide est bien B2, est-ce cela que tu veux ?
Ai-je bien compris ?
Tu as une colonne B qui est ta cellule de départ et ensuite les colonnes d'à côté des cellules à remplir.
Quand tu es arrivés au bout de la dernière colonne à remplir tu aimerais retourner automatiquement à la colonne B de la prochaine ligne vide.
Si c'est bien ce que j'ai compris, Il y a plusieurs solutions.
La première, sans VBA serait de
1) Déprotéger toutes les colonnes à remplir
2) Figer les volets pour avoir une visibilité plus aisées de la colonne B et de la ligne 1 mais ce n'est pas obligatoire pour revenir à colonne B
3) Faire en sorte que l'encodage se fasse par ligne si ce n'est pas le cas. Pour cela aller dans Outils/Options... dans la boite de dialogue Options sélectionner l'onglet [Modification]
Là cocher l'option Déplacer la sélection après validation et choisir le sens Droite
4) Ensuite protéger la feuille.
Ainsi après chaque validation (par retour), le curseur ira vers la prochaine cellule déprotégée, vers la droite. Au moment où il atteindra la dernière colonne déprotégée de la ligne, il passera à la colonne B de la ligne suivante. (A condition que la A soit protégée bien sûr.
Petite astuce : Si par exemple, la dernière colonne déprotégée est la L et que l'on veut revenir à la colonne B alors que l'on est sur la colonne G. Il suffit de faire Ctrl+Flèche vers la gauche pour revenir à B.
La deuxième solution serait d'utiliser la procédure événementielle Worksheet_Change()
Un petit dessin vaut mieux que...
Un petit exemple à partir de ma feuille avec quelques lignes.
Ici mon curseur se trouve en G2. La première cellule libre de la colonne B est en B6 et en orangé. Toute les cellules supérieures de B sont non-vides, le français étant ma langue d'entrée.
Je pourrais aussi bien être en K2654, après avoir effectué une modife, et devoir aller dans la 1ère cellule libre de B, en B8562.
A est caché car ne comporte que des indexs.
Cette fois ci je pense avoir été cohérent dans ma question.
Est-ce qu'il existe un raccourci ? Une macro ? Un petit programme ? quoi qu'il en soit manifestement mes connaissances en Excel ne vont pas jusque là.
Au passage je vous remercie car j'ai trouvé dans les tutoriels des tas d'astuces pour améliorer ma feuille, notamment la fonction DECALER. Trop génial !
Merci.
Bonjour,
Dans le code de la feuille :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Worksheet_Change(ByVal Target As Range) If Target.column > 2 Then Range("b" & Rows.Count).End(xlUp).Select End If End Sub
Bon, ben voilà, j'ai bien essayé mais au final ne sais pas où mettre ce code. Dans une macro ? J'ai essayé de le coller en passant par l'éditeur VBA dans une page appelée Code...
Et d'ailleurs par quoi est-ce déclenché ? Par l'action sur OK ?
Je ne suis pas loin d'être une bille...
Est-ce qu'il y a un tutoriel qui expliquerait comment procéder ?
Merci.
Bonjour,
Comme indiqué dans la réponse de casefayere, Dans le code de la feuille.
Dans l'éditeur Visual Basic (VBE), à gauche se trouve l'explorateur de projets, tu sélectionnes la feuille où se trouve tes données et ce par un doubles click.
Ensuite tu colles le code qu'il t'a proposé.
Sub Worksheet_Change(ByVal Target As Range) est une procédure événementielle qui se déclenche lors d'une modification dans une cellule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Worksheet_Change(ByVal Target As Range) If Target.column > 2 Then Range("b" & Rows.Count).End(xlUp).Select End If End Sub
Super, voilà ça marche pour l'insertion. Merci pour l'aide.
Le code fonctionne a ceci près que le curseur arrive dans la dernière cellule renseignée, et non pas dans la première cellule libre, celle qui lui est adjacente et immédiatement inférieure.
Merci de vos réponses.
Bonjour,
Ajouter au code, la propriété Offset avec comme argument 1 soit :
C'est à dire un déplacement de 1 ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column > 2 Then Range("b" & Rows.Count).End(xlUp).Offset(1).Select End If End Sub
Je vous remercie. Cela fonctionne à merveille et je vous assure que c'est un grand soulagement pour moi.
Seul petit changement, je souhaitais que ceci puisse être réalisé depuis n'importe quelle cellule, y compris depuis la colonne B. J'ai modifié le code ainsi :
c'est-à-dire que j'ai fait passé à 1 "If Target.Column > 1 Then", au lieu de 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column > 1 Then Range("b" & Rows.Count).End(xlUp).Offset(1).Select End If End Sub
Mais le code ne fonctionne que pour les cellules modifiées, et non pour les cellules seulement visitées. Comment faire en sorte qu'il fonctionne dans tous les cas ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager