Microsoft 365 Utilisation des plages en VBA

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 !

Sly le globe trotter

XLDnaute Occasionnel
Bonjour à tous,

Je me retrouve coincé sur l'utilisation de plages de cellules et ne parviens pas à déverminer le problème malgré mes recherches sur le net.

J'ai une fonction ayant en paramètres d'entrées, 2 "Worksheet".
VB:
Sub Traitement_DV(FResult As Worksheet, FAnalyse As Worksheet)

J'utilise ensuite dans la fonction mes variables FResult et FAnalyse pour effectuer mes traitements dont certains sur des cellules, par exemple
Code:
FAnalyse.Cells(6 + 10 * (CptRefCord - 1), 11) = ID_RefCord

En revanche, quand je cherche à travailler sur des plages, j'ai des soucis en fonction de la manière d’exécuter le code sur une ligne où je cherche à sélectionner une plage.
Code:
FAnalyse.Range("K" & i + 1 & ":M" & i + 5).Select

Si la feuille correspondant à FAnalyse est active, cela fonctionne sinon non...

Je me dis que cela pourrait venir de la manière de déclarer mes variables "feuilles" mais ne parviens pas à trouver la solution...
Pourriez-vous m'orientez vers la solution pour que le code puisse s’exécuter même si la feuille FAnalyse n'est pas active ?

Merci d'avance pour votre aide,
Sylvain
 
Solution
Bonjour.
Les Select sont généralement inutiles dans les macros. Ils ne sont là, dans les instruction engendrées par l'enregistreur de macro, que pour demeurer inutilement fidèle à l'état du classeur laissé par les actions effectuées pendant son enregistrement. Même si, à l'intention de l'utilisateur, je souhaite que la macro laisse une certaine plage sélectionnée, je préfère utiliser Application.GoTo. La méthode Select d'une expression Range désignant une plage n'appartenant pas à la feuille active ne peut jamais marcher. Mais on peut toujours affecter par un Set cette même expression à une variable locale déclarée As Range, qui peut ensuite s'utiliser directement mais avantageusement comme expression Range, tout comme Selection.
Bonjour.
Les Select sont généralement inutiles dans les macros. Ils ne sont là, dans les instruction engendrées par l'enregistreur de macro, que pour demeurer inutilement fidèle à l'état du classeur laissé par les actions effectuées pendant son enregistrement. Même si, à l'intention de l'utilisateur, je souhaite que la macro laisse une certaine plage sélectionnée, je préfère utiliser Application.GoTo. La méthode Select d'une expression Range désignant une plage n'appartenant pas à la feuille active ne peut jamais marcher. Mais on peut toujours affecter par un Set cette même expression à une variable locale déclarée As Range, qui peut ensuite s'utiliser directement mais avantageusement comme expression Range, tout comme Selection.
 
- 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

Discussions similaires

Retour