Macro - pour effacer une zone

Bonjour
j’aimerais créer une macro simple qui effacera une plage de cellules.
A partir d’un inputbox() je veux faire la saisie de la journée (D, L,M…S)
et avec un autre input (la ligne) par exemple 6.
Selon la journée a effacer, je voudrais que la plage de cellules (Y6 @ AM6) soit effacée.

Merci!

Bonjour @Golderock

La sélection/suppression d’une plage sont des actions qui peuvent être “enregistrées”. Ne connaissant pas ton niveau d’expérience, mon conseil est de parcourir le chapitre Débuter avec les macros de la documentation.

L’enregistrement des actions donnera quelque chose comme :

sub suppr
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$Feuille1.$Y$6:$AM$6"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())


end sub

Je me permets un autre conseil : un des intérêts d’utiliser un tableur est sa simplicité d’accès : on ouvre le fichier, on saisit directement. Rajouter des “couches” pour saisir et réaliser des actions via des dialogues ne pourra que compliquer cela.

Cordialement

Bonjour Pierre-Yves,
Mon niveau est debutant-moyen
Ma question n’était pas claire.
Voici ce que j’ai réussi a faire. Dis-moi si tu crois que j’aurais du faire autrement ?
Ca semble fonctionner

sub videjr

dim oSheet as object
dim document   as object
dim dispatcher as object
dim Jr  as string
dim Lg as string
dim LAF as string
dim oCell(0) as new com.sun.star.beans.PropertyValue

rem ----------------------------------------------------------------------

oSheet = thiscomponent.CurrentController.ActiveSheet
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

Jr = inputbox("Quel jours voulez-vous effacer ?", "Effacer un jour","D")

Lg =  inputbox("Quel ligne voulez-vous effacer ?", "Ligne","143")

If Jr = "D" then 
	oCell(0).Value = "$Par Semaine.$F"& Lg &":$W"& Lg	
end if 

If Jr = "L" then 
	oCell(0).Value = "$Par Semaine.$Y"& Lg &":$AP"& Lg	
End if

If Jr = "M" then 
	oCell(0).Value = "$Par Semaine.$AR"& Lg &":$BI"& Lg	
End if

If Jr = "E" then 
	oCell(0).Value = "$Par Semaine.$BK"& Lg &":$CB"& Lg	
End if

If Jr = "J" then 
	oCell(0).Value = "$Par Semaine.$CD"& Lg &":$CU"& Lg	
End if

If Jr = "V" then 
	oCell(0).Value = "$Par Semaine.$CW"& Lg &":$DN"& Lg	
End if

If Jr = "S" then 
	oCell(0).Value = "$Par Semaine.$DP"& Lg &":$EG"& Lg	
End if


oCell(0).Name = "ToPoint"


dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, oCell())
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())


end sub

Merci!

@Golderock c’est très bien. Tu pourrais améliorer avec des elseif ou un case pour éviter de passer systématiquement par tous les tests :

If Jr = "D" then 
    oCell(0).Value = "$Par Semaine.$F"& Lg &":$W"& Lg    
elseIf Jr = "L" then 
    oCell(0).Value = "$Par Semaine.$Y"& Lg &":$AP"& Lg   
elseIf Jr = "M" then 
    oCell(0).Value = "$Par Semaine.$AR"& Lg &":$BI"& Lg  
elseIf Jr = "E" then 
    oCell(0).Value = "$Par Semaine.$BK"& Lg &":$CB"& Lg  
elseIf Jr = "J" then 
    oCell(0).Value = "$Par Semaine.$CD"& Lg &":$CU"& Lg  
elseIf Jr = "V" then 
    oCell(0).Value = "$Par Semaine.$CW"& Lg &":$DN"& Lg  
elseIf Jr = "S" then 
    oCell(0).Value = "$Par Semaine.$DP"& Lg &":$EG"& Lg  
End if

Si tu n’es pas l’utilisateur du programme il serait peut-être bien de tester une saisie erronée (autre que les lettres attendues) car actuellement il ne se passe rien (ce qui est ok) mais sans avertissement…

Cordialement

Oui en effet, se sera plus simple.
Et oui je suis le seul utilisateur.
Merci pour tout.
Resolu