Problème sélection/activation de feuille

Sebval26 - 29 févr. 2024 à 19:41
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 1 mars 2024 à 12:22

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

A voir également:

2 réponses

yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
1 mars 2024 à 09:03

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
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550
1 mars 2024 à 10:52

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".

0

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.

0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550
Modifié le 1 mars 2024 à 12:26

Ma suggestion, c'est de ne plus faire de "select".

Où se produit la nouvelle erreur "la méthode 'range' de l'objet '_worsheet" à échoué"?

0