XL 2019 syntaxe worksheet avec checkbox

Jacques25bis

XLDnaute Junior
Bonjour à tous,

J'essaye d'optimiser un code pour en améliorer la lecture tout en essayant de rester performant. Je bloque sur un problème de syntaxe je pense avec le bout de code suivant :

RQ1 est une checkbox, donnée est défini plus haut et RQ_Nom est une cellule nommée

Si j'écris :

Dim réclamQ as worksheet, Dérog as worksheet
Set RéclamQ= thisworkbook.sheets("RéclamQ")
Set Dérog= thisworkbook.sheets("Dérog")

If RéclamQ.RQ1.value=true then
with Dérog
.[D5]=donnée
.[M5]=[RQ_Nom]
End with
... Ca ne marche pas alors que :

Dim réclamQ as worksheet, Dérog as worksheet

If worksheet("RéclamQ").RQ1.value=true then
with Dérog
.[D5]=donnée
.[M5]=[RQ_Nom]
End with

Avez vous une explication svp?

2ème question :

Si ma checkbox RQ1 est cochée, j'ai des actions à faire sur 2 onglets différents, est-ce que avec seulement with.... End with c'est suffisant ou est-ce qu'il faut que je fasse un select ou activate entre les 2?

Ce qui donnerai (avec mon de code qui fonctionne :

If worksheet("RéclamQ").RQ1.value=true then
Dérog. select ou .activate ou rien
with Dérog
.[D5]=donnée
.[M5]=[RQ_Nom]
End with
RéclamS. select ou .activate ou rien
with RéclamS
...
...
end with

Merci de votre aide

@ plus

Jack
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Une variable déclarée As Worksheet est destinée à représenter une feuille de calcul sans spécificité particulière. Elle ne possède pas de propriété RQ1.
Les objets de la rubrique Microsoft Excel Objets si, ils ont leurs spécialités. Aussi personnellement je n'en déclare jamais pour ce genre d'usage. À quoi bon ? J'utilise ceux là ! Remarque Feuil1, Feuil2 etc. étant dépourvu de sens je les renomme généralement d'un nom mnémonique commençant par Wsh. Attention, je parle bien des objets VBA de la rubrique, pas des entités Excel que sont les feuilles qu'ils représentent. Confondre une feuille Excel et un objet Worksheet serait un peu comme confondre un gigantesque pont roulant d'atelier avec son boitier de commande.
 
Dernière édition:

Jacques25bis

XLDnaute Junior
Salut Dranreb,

Merci pour ta réponse mais je n'ai pas tout compris désolé.
Pour répondre à ta question et être plus clair, dans mon onglet principale j'ai mis une checkbox (nommée RQ1) qui me déclenchera certains actions.
Pour ce que j'ai compris si je veux faire appelle à cette checkbox je n'ai pas d'autre choix que d'écrire :
if Sheets("RéclamQ").RQ1. value = true then ...

Dans ce cas là il ne s'agit pas de la variable as worksheet.

@ plus

Jack
 

Dranreb

XLDnaute Barbatruc
Si, il y a un autre choix: employer comme expression Worksheet le nom de l'objet Worksheet particularisé installé par l'application Excel
Vous pouvez aussi l'obtenir par cette macro :
VB:
Sub Test()
   With Sheets("RéclamQ")
      MsgBox "L'objet Worksheet installé par l'application hôte pour" _
         & vbLf & "représenter la feuille """ & .Name & """ s'appelle actuellement " _
         & .CodeName & ". Mais vous pouvez le renommer différemment.", _
         vbInformation
      End With
   End Sub
 
Dernière édition:

Wayki

XLDnaute Impliqué
Salut,
Si ça peut aider, j'ai fais ce fichier pour quelqu'un d'autre du forum.
Je sais juste pas si on peut remplacer checkbox1 par son éventuel nom, mais ça m'intéresse si c'est faisable.
A +
 

Pièces jointes

  • Classeur1 (version 2).xlsb.xlsm
    73.9 KB · Affichages: 9

Statistiques des forums

Discussions
312 331
Messages
2 087 360
Membres
103 529
dernier inscrit
moket07