Problème sélection/activation de feuille
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'ai un problème avec la sélection de feuille que je n'avais pas avant. En fait j'en ai deux qui me semblent être lié.
1/ Jusqu'à il y a quelque jour lorsque je voulais sélectionner une cellule ou une plage dans une feuille différente de celle sélectionner j'utilisais la ligne de commande suivante :
Worksheets("XXX").Range("B2"). select
Aujourd'hui je suis obligé de le faire en deux lignes :
Worksheets("XXX").select
Range("B2").select
Si je le fais en une ligne j'obtiens l'erreur 1004 : la méthode sélect de la classe range à échoué.
Quelqu'un saurais ttil m'expliquer le pourquoi du comment?
2/ J'ai fait ce code :
Sub Bouton5_Cliquer() Dim Effectif_entreprise As Worksheet Set Effectif_entreprise = Worksheets("Effectif entreprise") 'recherche de la colonne contenant les intitulés d'emploi et détermination de la variable correspondant à la cellule Dim Colonne_Emploi As Range Set Colonne_Emploi = Effectif_entreprise.UsedRange.Find("Emploi") Dim Colonne_Service As Range Set Colonne_Service = Effectif_entreprise.UsedRange.Find("Service") 'Détermination de la plage de cellule correspondant aux intitulés d'emploi Dim Liste_emploi As Range Set Liste_emploi = Range(Cells(Colonne_Emploi.Row + 1, Colonne_Emploi.Column), Range(Colonne_Emploi.Address).End(xlDown)) Dim Liste_Service As Range Set Liste_Service = Range(Cells(Colonne_Service.Row + 1, Colonne_Service.Column), Range(Colonne_Service.Address).End(xlDown)) 'copier les intitulés de service dans la feuilles "effectif service" et supprimer les doublons Worksheets("effectif entreprise").Select Liste_Service.Copy Sheets("Effectif service").Select Range("D3").PasteSpecial xlPasteValues ActiveSheet.Range("D3", Range("D3").End(xlDown)).RemoveDuplicates Columns:=1, Header:=xlNo End Sub
Lorsque je teste la macro depuis l'éditeur en étant sur déjà sur la feuille "Effectif entreprise", la macro s’exécute parfaitement. mais lorsque je lance la macro en étant sur une autre feuille, il m'emmène sur la feuille "effectif service", toutes les cellule de la colonne D à partir de D3 sont sélectionnées, mais rien n'as été copié. J'ai l'impression qu'il ignore l'instruction sheets("effectif entreprise").select et je ne comprends pas pourquoi.
Je vous remercie d'avance de votre aide qui pourrait m'éviter une plus forte calvitie ;-)
Windows / Firefox 123.0
- Problème sélection/activation de feuille
- Clé d'activation windows 10 - Guide
- Bruler feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Feuille a5 - Guide
- Clé activation office 2010 gratuit - Télécharger - Sécurité
2 réponses
bonjour,
il est préférable d'éviter de faire Select, et, surtout, de toujours préciser de quelle feuille il s'agit pour chaque "range" ou "cells".
Sub Bouton5_Cliquer() Dim Effectif_entreprise As Worksheet Set Effectif_entreprise = Worksheets("Effectif entreprise") 'recherche de la colonne contenant les intitulés d'emploi et détermination de la variable correspondant à la cellule Dim Colonne_Emploi As Range Set Colonne_Emploi = Effectif_entreprise.UsedRange.Find("Emploi") Dim Colonne_Service As Range Set Colonne_Service = Effectif_entreprise.UsedRange.Find("Service") 'Détermination de la plage de cellule correspondant aux intitulés d'emploi Dim Liste_emploi As Range Set Liste_emploi = Effectif_entreprise.Range(Effectif_entreprise.Cells(Colonne_Emploi.Row + 1, Colonne_Emploi.Column), Effectif_entreprise.Range(Colonne_Emploi.Address).End(xlDown)) Dim Liste_Service As Range Set Liste_Service = Effectif_entreprise.Range(Effectif_entreprise.Cells(Colonne_Service.Row + 1, Colonne_Service.Column), Effectif_entreprise.Range(Colonne_Service.Address).End(xlDown)) 'copier les intitulés de service dans la feuilles "effectif service" et supprimer les doublons Liste_Service.Copy Sheets("Effectif service").Range("D3").PasteSpecial xlPasteValues Sheets("Effectif service").Range("D3", Sheets("Effectif service").Range("D3").End(xlDown)).RemoveDuplicates Columns:=1, Header:=xlNo End Sub
Bonjour,
Je vous remercie de votre réponse.
Dans un précédent fichier je ciblais toujours la feuille. Mon problème c'est que maintenant quand je le fais en une seule ligne comme vous me l'avez indiqué dans votre correction du code j'obtiens l'erreur 1004 : la méthode 'range' de l'objet '_worsheet" à échoué.
C'est pour cela qu'il me semble que mes deux problèmes sont liés.
il est préférable d'éviter de faire Select, et, surtout, il est préférable de toujours préciser de quelle feuille il s'agit pour chaque "range" ou "cells".