Sauter de cases en cases

YANOU

XLDnaute Junior
Bonjour à tous,
pour finaliser une feuille de calcul, je voudrais (en appuyant uniquement une fois sur "Entrée") passer de la cellule A2 à la cellule R3 (remplissage par l'utilisateur, de certaines cases, sans se soucier du reste). Mon onglet comporte 7 feuilles et 6 cases à remplir, pour l'instant je suis obligé de faire chauffer la molette de la souris...

PS: La solution de faire une feuille avec uniquement ces 6 cases pour qu'elles soient remplies automatiquement plus loin ne me satisfait pas.

Merci à tous pour votre aide
 

YANOU

XLDnaute Junior
Re : Sauter de cases en cases

Merci à vous tous!
Wilfried 42, j'ai récupéré "tabulation de saisie sur feuille", c'est ce qu'il me faut, mais comment m'en servir sur mon document. Je suis novice (j'ai même pas la ceinture blanche...).
Pour l'instant je maitrise uniquement les formules dans les cases, le VBA et les macros :confused:

Merci de votre aide
 

wilfried_42

XLDnaute Barbatruc
Re : Sauter de cases en cases

re:

Tu crees ta feuille bloque selon le meme modele que l'exemple (pas de majuscule dans le nom de la feuille : bloque)

ensuite tu appuies sur ALT F11 pour acceder au vba
la fenetre de decoupe en 2 parties, à gauche le detail des modules, à droite une feuille branche

à gauche : doubleclick sur le nom Thisworkbook

faire un copier coller de tout ce qui se trouve au dessous
Code:
Private Sub Workbook_Open()
    Dim feuille As String, i As Integer
    feuille = ActiveSheet.Name
    col_bloque = 0
    With Sheets("bloque")
        For i = 1 To .Range("IV1").End(xlToLeft).Column
            If .Cells(1, i).Value = feuille Then col_bloque = i: Exit For
        Next
        If col_bloque > 0 Then flag_bloque = True Else flag_bloque = False
    End With
    lig_bloque = 2
    Call gw_bloque
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim feuille As String, i As Integer
    feuille = Sh.Name
    col_bloque = 0
    With Sheets("bloque")
        For i = 1 To .Range("IV1").End(xlToLeft).Column
            If .Cells(1, i).Value = feuille Then col_bloque = i: Exit For
        Next
        If col_bloque > 0 Then flag_bloque = True Else flag_bloque = False
    End With
    lig_bloque = 2
    If col_bloque > 0 Then ActiveSheet.Range(Sheets("bloque").Cells(2, col_bloque).Value).Select
    Call gw_bloque
End Sub

ensuite :

clickdroit sur ja fenetre de gauche : Insertion / Module
une page blanche apparait
faire un copier coller des lignes ci-dessous
Code:
Public col_bloque As Integer, flag_bloque As Boolean, lig_bloque As Long

Sub gw_bloque()
    If flag_bloque = True Then
        Application.OnKey "{Enter}", "gwsuivant"
        Application.OnKey "{Right}", "gwsuivant"
        Application.OnKey "{Return}", "gwsuivant"
        Application.OnKey "{Tab}", "gwsuivant"
        Application.OnKey "{Down}", "gwsuivant"
        Application.OnKey "{Up}", "gwprecedent"
        Application.OnKey "{Left}", "gwprecedent"
        Application.OnKey "+{Tab}", "gwprecedent"
    Else
        Application.OnKey "{Enter}"
        Application.OnKey "{Return}"
        Application.OnKey "{Right}"
        Application.OnKey "{Left}"
        Application.OnKey "{Tab}"
        Application.OnKey "{Down}"
        Application.OnKey "{Up}"
        Application.OnKey "+{Tab}"
    End If
End Sub

Sub gwsuivant()
    lig_bloque = lig_bloque + 1
    If Sheets("bloque").Cells(lig_bloque, col_bloque).Value = "" Then lig_bloque = 2
    Range(Sheets("bloque").Cells(lig_bloque, col_bloque).Value).Select
End Sub

Sub gwprecedent()
    lig_bloque = lig_bloque - 1
    If lig_bloque = 1 Then lig_bloque = Sheets("bloque").Cells(65536, col_bloque).End(xlUp).Row
    Range(Sheets("bloque").Cells(lig_bloque, col_bloque).Value).Select
End Sub

retour sur le classeur excel, sauvegarder, remplir la feuille bloque et tester

si probleme, joint ton fichier
 

Discussions similaires

Réponses
16
Affichages
2 K

Statistiques des forums

Discussions
312 299
Messages
2 086 986
Membres
103 419
dernier inscrit
mk29