Utilisation de 'With'

  • Initiateur de la discussion Initiateur de la discussion Tinnou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Tinnou

Guest
Bonjour à tous!


Je voudrais savoir s'il est possible, en utilisant l'instruction "With", de faire référence à l'objet lui-même plutôt qu'à l'un de ses attributs.


Par exemple:

Code:
Sub Test()
With Thisworkbook.Worksheets(1)   'avec la première feuille du classeur
.Cells(1,1) = "toto"                       'je met "toto" dans la cellule A1
Call FonctionQuiPrendUneFeuilleEnArgument(Thisworkbook.Worksheets(1))  'Ici je veux remplacer Thisworkbook.Worksheets(1) par autre chose de plus simple...
.Cells(2,1) = "titi"                         'je met "titi dans la cellule B1
End With
End Sub

Sub FonctionQuiPrendUneFeuilleEnArgument(Sht as Worksheet)

[...]

End Sub

En fait, je voudrais savoir si, comme je suis dans un "With", je peux remplacer le "Thisworkbook.Worksheets(1)" lors de l'appel de la fonction par quelquechose d'autre? J'ai essayé de mettre juste un point "." mais cela ne marche pas...


Auriez-vous peut-être une idée?!?

Merci d'avance!
 
Re : Utilisation de 'With'

Bonjour Tinnou.

Je suis pas sûr que ce soit ce que tu désires, mais tu peux tester comme ça:

Code:
Sub Test()
With Thisworkbook
  with .Worksheets(1)   'avec la première feuille du classeur
    .Cells(1,1) = "toto"                       'je met "toto" dans la cellule A1

    .Cells(2,1) = "titi"                         'je met "titi dans la cellule B1

  End With
Call FonctionQuiPrendUneFeuilleEnArgument(.Worksheets(1))  'Ici je veux remplacer Thisworkbook.Worksheets(1) par autre chose de plus simple...
end with
End Sub

Sub FonctionQuiPrendUneFeuilleEnArgument(Sht as Worksheet)

[...]

End Sub

A priori, c'est juste une question de formulation, sauf si tu mets tes instructions dans un ordre bien précis.

Thomas
 
Dernière édition:
Re : Utilisation de 'With'

Bonjour,

En utilisant une variable:

Code:
Dim Wks1 As Worksheet

Set Wks1 = ThisworkBook.Worksheets(1)

With Wks1
.Cells(1,1) = "toto"
      Call FonctionQuiPrendUneFeuilleEnArgument(Wks1)
.Cells(2,1)= "titi"
End With
Cordialement,

Tirex28/
 
Re : Utilisation de 'With'

Thomas, tirex28, merci d'avoir répondu si rapidement! 🙂

Vos deux propositions sont intéressantes!

La première proposition pose effectivement le problème de l'ordre d'exécution, en obligeant à exécuter la procédure FonctionQuiPrendUneFeuilleEnArgument à la fin, une fois sorti de la boucle With. Donc si on avait besoin de cette fonction pour exécuter un traitement dans la boucle with, et que l'on ne peut pas changer l'ordre, cela risque de poser problème! Mais cela me donne quand même quelques idées pour des with imbriqués (jamais pensé à appeler un With dans un autre With).

La proposition de tirex28 est aussi intéressante
tirex28 à dit:
Bonjour,

En utilisant une variable:

Code:
Dim Wks1 As Worksheet

Set Wks1 = ThisworkBook.Worksheets(1)

With Wks1
.Cells(1,1) = "toto"
      Call FonctionQuiPrendUneFeuilleEnArgument(Wks1)
.Cells(2,1)= "titi"
End With
Cordialement,

Tirex28/

C'est ce que je fais pour le moment: j'ai déclaré une variable. Mais je me demandais si, comme j'utilisais un With, j'aurais pu éviter de déclarer cette variable (car elle est alors mise en mémoire deux fois, une fois dans la variable et une fois dans le With...), avec peut-être une possibilité dans une boucle With Myobject de faire appel à l'objet directement. Par exemple:

Code:
Sub Test()

With ThisWorkbook.Worksheets(1)
[...]
Call FonctionQuiPrendUneFeuilleEnArgument(.Thisobject) 'Ou ". " ou ".ActiveObject" enfin quelquechose du genre qui se réfère à l'objet déclaré dans With... Bien sûr ceux-ci ne marchent pas
[...]
End With
End Sub

En fait, je vois qu'il est possible de le faire en déclarant des variables, mais je me demandais si on ne pourrait pas le faire simplement en utilisant le "With" et en faisant référence à l'objet lui-même plutôt qu'à un de ses arguments.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
454
Réponses
4
Affichages
733
Réponses
5
Affichages
910
Réponses
43
Affichages
806
Retour