Touche Tabulation & colonnes

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Dans ma feuille toutes les cellules sont bloquées, hormis celles où l'on rentre une valeur.
Quand on utilise la touche Tabulation, chez moi en tout cas, on se déplace de gauche à droite. Pourrait-on faire en sorte pour que le déplacement se fasse dans une même colonne de haut en bas ?

Merci pour tout avis.
 

CISCO

XLDnaute Barbatruc
Re : Touche Tabulation & colonnes

Bonjour

On peut obtenir ce genre de déplacement avec la touche Entrer, en réglant dans --> Options d'Excel --> Options avancées --> Options d'Edition --> Déplacer la sélection après validation --> vers le bas.

Si tu veux absolument le faire avec la touche Tab, je ne vois pas directement avec les options d'Excel. Autrement, on peut le faire avec deux toutes petites macros...
Code:
Sub changer_Tab()
    Application.OnKey Key:="Tab", Procedure:="Tabulation"
End Sub

Sub Tabulation()
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
End Sub

@ plus
 

Pièces jointes

  • TabClasseur1.xlsm
    18.4 KB · Affichages: 23
Dernière édition:

job75

XLDnaute Barbatruc
Re : Touche Tabulation & colonnes

Bonjour Magic_Doctor, CISCO,

Ma foi c'est un problème intéressant.

Voyez les macros dans Feuil1, ThisWorkbook et celles-ci dans Module1 :

Code:
Sub TabulationVerticale()
Application.OnKey "{TAB}", "TabulationDirecte"
Application.OnKey "+{TAB}", "TabulationInverse" 'avec touche Maj
End Sub

Sub TabulationNormale()
Application.OnKey "{TAB}"
Application.OnKey "+{TAB}"
End Sub

Sub TabulationDirecte()
Tabulation xlNext
End Sub

Sub TabulationInverse()
Tabulation xlPrevious
End Sub

Sub Tabulation(sens)
Dim ac As Range, rc&, P As Range, c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'si nécessaire
On Error Resume Next 'sécurité
With ActiveSheet
  .Protect "toto", UserInterfaceOnly:=True
  .EnableSelection = xlUnlockedCells
  With .UsedRange
    Set ac = ActiveCell
    rc = .Rows.Count
    Set P = .Offset(rc) 'plage auxiliaire
    .Copy
  End With
  P(1).PasteSpecial xlPasteFormats 'collage spécial Formats
  For Each c In P
    If Not c.Locked Then c = "a" 'repère
  Next
  Set c = P.Find("a", ac(1 + rc), xlFormulas, , xlByColumns, sens)
  c(1 - rc).Select
  Set c = c.Find("", , , , xlByRows) 'RAZ de la boîte de dialogue Rechercher
  P.Delete xlUp 'suppression de la plage auxiliaire
  Set P = .UsedRange 'actualisation de la barre de défilement verticale
End With
Application.EnableEvents = True
End Sub
Fichier joint.

Edit : ajouté l'actualisation de la barre de défilement.

A+
 

Pièces jointes

  • Tabulation(1).xlsm
    28.1 KB · Affichages: 40
Dernière édition:

job75

XLDnaute Barbatruc
Re : Touche Tabulation & colonnes

Re,

Que veux-tu exactement Magic_Doctor ? Essaie d'être plus clair.

Je ne sais pas quand est apparu FindFormat, sur Excel 2010 il me semble ?

C'est évidemment bien plus rapide s'il y a beaucoup de cellules :

Code:
Sub Tabulation(sens)
Dim ac As Range, rc&, P As Range, c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'si nécessaire
Application.FindFormat.Clear
Application.FindFormat.Locked = False
On Error Resume Next 'sécurité
With ActiveSheet
  .Protect "toto", UserInterfaceOnly:=True
  .EnableSelection = xlUnlockedCells
  With .UsedRange
    Set ac = ActiveCell
    rc = .Rows.Count
    Set P = .Offset(rc) 'plage auxiliaire
    .Copy
  End With
  P(1).PasteSpecial xlPasteFormats 'collage spécial Formats
  Set c = P.Find("", ac(1 + rc), xlFormulas, , xlByColumns, sens, SearchFormat:=True)
  c(1 - rc).Select
  Set c = c.Find("", , , , xlByRows) 'RAZ de la boîte de dialogue Rechercher
  P.Delete xlUp 'suppression de la plage auxiliaire
  Set P = .UsedRange 'actualisation de la barre de défilement verticale
End With
Application.FindFormat.Clear
Application.EnableEvents = True
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Tabulation FindFormat(1).xlsm
    28.4 KB · Affichages: 26

Magic_Doctor

XLDnaute Barbatruc
Re : Touche Tabulation & colonnes

Cette histoire est en effet intéressante, car je viens de me rendre compte que ce problème de touche de tabulation, magistralement solutionné par job, résolvait par la même ocasion un problème que je soulevais sur un autre fil (https://www.excel-downloads.com/threads/court-circuiter-un-avertissement-excel.20007483/), afin de ne plus faire apparaître un message intempestif et agaçant qui apparaissait systématiquement sur une feuille protégée, alors que l'on rentrait par inadvertance quelque chose dans une cellule bloquée. Et job, dans le post #3 de ce même fil de me répondre :
C'est simple : NON.
Et bien OUI ! C'est possible !
Bravo job, tu viens de régler 2 problèmes à la fois !
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : Touche Tabulation & colonnes

Bonsoir job, le forum,

Je reviens sur ce fil.
Le déplacement du curseur via la touche de tabulation fonctionne très bien.
Il y a cependant un problème au cas où, lors de la manipulation de la feuille, des lignes viennent à être occultées ou pas. Si j'occulte un certain nombre de lignes où se trouvent des cellules de saisies (non bloquées) et que j'utilise, pour me déplacer, la touche "Tab", je vais bien me déplacer mais aussi dans des cellules inutiles puisque occultées.
Pour contourner le problème, pour chaque cas de figure j'ai répertorié les cellules qui sont occultées ou pas. Voilà ce que ça peut donner :
VB:
Union([C6], [C13], [C20], [C23], [I13], [I20], [I23]).Locked = False
[C9].Locked = IIf(compt1 = 1, False, True) 
[C13].Locked = IIf(compt2 = 1, False, True) 
Union([C28], [C30], [C38], [C41], [C47], [C48], [C49], [C55], Range("F47:G47"), Range("F48:G48"), Range("F49:G49"), [I28],[I30], [I38], [I41], [I47], [I48], [I49], Range("I55:I56"), [I58]).Locked = True
C'est poussif, mais ça marche bien quand même.

En revanche, pourrait-on solutionner ce problème plus élégamment (supposons qu'il y ait des dizaines de cellules et moult combinaisons d'occultages-désoccultages), à savoir repérer les cellules non bloquées occultes, afin que le curseur, lors de son déplacement, n'en tienne pas compte ; ce qui évite de cliquer dans le vide ?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 207
Messages
2 107 274
Membres
109 791
dernier inscrit
frederic.perrier@hotmail.