Sélection d'un onglet dont le nom est inconnu d'un autre classeur

8docmission.xlsx (24.82 Ko)

Bonsoir,

J'ai besoin d'un coup de main sur une partie de mon code et je remercie d'avance ceux et celles qui voudront bien m'aider.

Je suis en train de créer un fichier ( dit guide) qui doit notamment récupérer des données d'un onglet d'un autre classeur (dit docmission) que je ne peux pas modifier puisqu'il ne m'appartient pas.

Le code fonctionne parfaitement (même si vous aurez sans doute des choses à redire sur l'écriture!) lorsque j'annonce quel onglet choisir dans le code. Mais je souhaite qu'au moment d'ouvrir le 2e classeur (docmission) je puisse choisir un des différents onglets sans savoir à l'avance lequel ouvrir.

Et là, ce qui doit être simple me bloque!

dans la phrase Sheets("ACI1").Select, je ne souhaite pas indiquer ("ACI1") mais "un truc" qui me permette de choisir un onglet de mon choix dans le doc [docmission]. Ces onglets changeant régulièrement, je ne connais pas à l'avance leur nom, l'onglet à choisir n'a pas forcement la même place à chaque fois dans le classeur et surtout je n'ai besoin que d'un onglet à chaque fois.

Sub MAJ()

'declaration de variable
Dim nom_fichier As Variant
Dim docmission As Workbook

'empêche affichage mess d'alerte
Application.DisplayAlerts = False
'optimisation du calcul de MAJ
Application.ScreenUpdating = False

'chemin d'accès
ChDir "H:/blablabla"

'récupération du nom du fichier sur le H
' le nom du fichier n'est pas statique
nom_fichier = Application.GetOpenFilename("fichier excel (*.), *.")

'initialisation de la variable docmission
Set docmission = Workbooks.Open(nom_fichier)

'efface la feuille périmètre du fichier guide
ThisWorkbook.Activate
Sheets("périmètre").Select
Range("B13:P40").Select
Selection.ClearContents
Range("B12").Select

'recuperation du contenu de périmètre contrôle du classeur DocMission MS
docmission.Activate
Sheets("ACI1").Select
Range("B2:P40").Select
Selection.Copy

    'nom du fichier à remplir
Windows("NewGuideListe22.xlsm").Activate
Range("B13").Select

Selection.PasteSpecial , Transpose:=False

docmission.Close

Application.DisplayAlerts = True 'affiche les alertes
Application.ScreenUpdating = True ' affiche la page MAJ

End Sub

J'espère être claire...

://

je vous joins les fichiers allégés si ça peut aider

14docmission.xlsx (24.82 Ko)

Bonjour,

avec un userform non modal.
Je me suis mis dans Module1 Sub test() pour isoler le code, que tu vois bien juste cette partie.
docmission.xlsx doit être ouvert pour tester.
Il y a aussi un peu de code dans le userform, ne pas oublier la variable publique shMission en tête de module

eric

PS : ensuite travaille avec shMission, pas besoin d'activer le classeur et la feuille pour l'utiliser dans 99% des cas.
Eviter aussi les .Select chronophages
Exemple, remplace :

docmission.Activate
Sheets("ACI1").Select
Range("B2:P40").Select
Selection.Copy

par :
shMission.Range("B2:P40").copy

Merci ! je regarde tout ça et reviens vers toi !

Eriiic,
Malheureusement je ne peux pas écrire [Workbooks("docmission.xlsx").Activate] puisque mon fichier n'a pas toujours le même nom (le nom du fichier n'est pas statique) d'où mon [docmission.Activate]

Cela étant même en adaptant, le fichier qui s'ouvre est vide avec seulement le userform "vous avez choisi" et pas d'onglet à sélectionner.

Que veux tu dire par travailler avec le ShMission?

Bonjour,

je t'ai écrit : docmission.xlsx doit être ouvert pour tester.
Donc tu testes comme ça, et si ça correspond à ce que tu veux, tu mets ces quelques lignes dans ton code, juste après l'ouverture de ton classeur
(sauf la ligne Workbooks("docmission.xlsx").Activate puisque tu auras ouvert le bon et il sera actif à ce moment là)

Et tu pourras y choisir ton onglet.
eric

ok ! j'essaye! merci !

Rechercher des sujets similaires à "selection onglet nom inconnu classeur"