je travail sur un tableau de permanence.
J'ai repris une macro de votre bibiliothèque que j'adapte à mon tableau. Il s'agit de la macro qui permets de passer à la cellule suivante lorsque l'on appuie sur une certaine touche. Dans mon fichier par exemple les touches A, I, P.
Mon problème est que je n'arrive pas à faire que cette macro se fasse sur plusieurs lignes non continue.
Voici la macro utilisée
Code : Tout sélectionner
REM ***** BASIC *****
' Macro permettant dans une zone déterminée, d'aller automatiquement
' à la cellule suivante lors de l'appui de touches précises
' Ici touche P, A, I, (évite d'avoir à appuyer sur la touche Entrée)
global oKeyHandler as object
Sub AddKeyHandler
'Macro à associer à l'évènement "Activation" de la feuille
oKeyHandler = CreateUnoListener("KeyHandler_","com.sun.star.awt.XKeyHandler")
thisComponent.currentController.addKeyHandler(oKeyHandler)
'Print "Listener On"
End Sub
Sub RemoveKeyHandler
'Macro à associer à l'évènement "Désactivation" de la feuille
On Error Resume Next
thisComponent.currentController.removeKeyHandler(oKeyHandler)
'Print "Listener Off"
End Sub
Sub KeyHandler_disposing
End Sub
Function KeyHandler_keyPressed(oKeyEvent as new com.sun.star.awt.KeyHandler) As Boolean
'KeyHandler_keyPressed = false
cellule=thisComponent.CurrentSelection
If cellule.supportsService("com.sun.star.table.Cell") Then
Select Case oKeyEvent.keyChar
Case "A","P","I":
KeyHandler_keyPressed = false
Case Else:
KeyHandler_keyPressed = false
End Select
Else
KeyHandler_keyPressed = false
End If
End Function
Function KeyHandler_keyReleased(oKeyEvent as new com.sun.star.awt.KeyHandler) As Boolean
KeyHandler_keyReleased = False
maFeuille=thisComponent.CurrentController.ActiveSheet
zoneEcoute=maFeuille.getCellRangeByName("G8:AQ8").RangeAddress
LigDeb=zoneEcoute.StartRow
ColDeb=zoneEcoute.StartColumn
LigFin=zoneEcoute.EndRow
ColFin=zoneEcoute.EndColumn
cellule=thisComponent.CurrentSelection
'xray oKeyEvent
If cellule.supportsService("com.sun.star.table.Cell") Then
adresseCellule=cellule.CellAddress
lig=adresseCellule.Row
col=adresseCellule.Column
If lig>=LigDeb And lig<=LigFin And col>=ColDeb And col<=ColFin Then
'KeyHandler_keyReleased = False
cellule=maFeuille.getCellByPosition(col+1,lig)
Select Case oKeyEvent.keyChar
Case "A","P","I":
thisComponent.currentController.Select(cellule)
Case Else:
thisComponent.currentController.Select(cellule)
cellule=maFeuille.getCellByPosition(col,lig)
eval=cellule.String
Select Case eval
Case "A","P","I":
' N'efface pas la case si elle contient une valeur
Case Else:
cellule.String=""
MsgBox "Erreur" 'Affichage Erreur
End Select
thisComponent.currentController.Select(cellule)
End Select
End If
End If
End Function
j'ai essayé de changer la ligneG8:AQ8;G9:AQ9;G11:AQ11;G12:AQ12;G14:AQ14;G15:AQ15;G14:AQ17;G18:AQ18;G20:AQ20;G21:AQ21;G23:AQ24;G24:AQ24;G26:AQ26;G27:AQ27;G29:AQ29;G30:AQ30;G32:AQ32;G33:AQ33;G35:AQ35;G36:AQ36;G38:AQ38;G39:AQ39;G41:AQ41;G42:AQ42
en mettant mes plages mais cela ne fonctionne pas.zoneEcoute=maFeuille.getCellRangeByName("G8:AQ8")
Que dois je faire ?
merci par avance

