Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 ActiveSheet avec nom feuille contenu dans une cellule

Vinaigrette57

XLDnaute Nouveau
Bonjour,

Je cherche à activer une feuille dans un classeur différent de ThisWorkbook, qui est ouvert et visible, mais en la sélectionnant avec son nom qui est contenu dans une cellule de ThisWorkbook. Le nom existe donc bien, car récupéré 2sec avant.

Pour résumer ce que je compte faire, j'ai une listbox qui me recense les feuilles sélectionnées (de l'autre classeur ouvert) par l'utilisateur, et les saisies dans ma ThisWorbook.Sheets(1), dans une plage bien définie, et j'exécute un code avec un for..to sur chacune des feuilles sélectionnées.

Auparavant j'avais un BookToCopy.ActiveSheet qui marchait très bien, mais maintenant je veux pouvoir sélectionner la feuille avec son nom contenu dans la cellule A1 de la feuille 1 de ThisWorkbook.

Je ne sais pourquoi la dernière ligne ci-après ne fonctionne pas.. (err. 438)

Petit bout de code pour que vous voyez un peu le contexte :

BookToCopy is a workbook / SheetToCopy is a worksheet / NameSheetToCopy is a string

VB:
    For i = 1 To .SelectedItems.Count 'Début de boucle pour chaque fichier sélectionné
   
    Set BookToCopy = Workbooks.Open(FD.SelectedItems(i)) 'BookToCopy = Fichier ouvert
   
    UserForm.Show
   
    'Application.ScreenUpdating = False
   
    LastSheetInMain = Sheets(1).Cells(Rows.Count, 48).End(xlUp).Row
   
    For fCell = 4 To LastSheetInMain Step 1 'Début de boucle pour chaque feuille sélectionnée
   
    BookToCopy.Visible = True
   
    'Set SheetToCopy = BookToCopy.ActiveSheet
    NameSheetToCopy = ThisWorkbook.Sheets(1).Range("A1").Value
   
    If NameSheetToCopy <> 0 Then MsgBox ("OK pas vide")

    'Set SheetToCopy = BookToCopy.Sheets(NameSheetToCopy) 'On copie la feuille sélectionnée

En vous remerciant si vous avez une idée du pourquoi du comment, ou une alternative.

Je précise que j'ai passé une heure et demi à chercher en FR/EN sur internet avant de venir poser ma question et ai testé 15 solutions possibles mais rien n'y fait..

Cordialement.
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Bonjour

Sans savoir quelle ligne provoque ton problème
ni aucun fichier pour se rendre compte ..
essaie ceci
Set SheetToCopy = BookToCopy.Sheets(cstr(NameSheetToCopy)) 'On copie la feuille sélectionnée
 

Vinaigrette57

XLDnaute Nouveau
Bonjour,
Ta réponse m'a aidé, partiellement, ce que je souhaitais faire fonctionne.
Mon plus gros problème était de récupérer la valeur de la cellule dans ma variable, que j'utilise pour nommer définir le nom de la feuille sur laquelle le reste du code va tourner.

VB:
NameSheetToCopy = ThisBook.Sheets(1).Cells(fCell, 48)
Set SheetToCopy = BookToCopy.Sheets(CStr(NameSheetToCopy))
 SheetToCopy.Copy After:=ThisBook.Sheets(Sheets.Count)

ni aucun fichier pour se rendre compte ..
Je ne peux pas, trop d'éléments à anonymiser de partout..
Sans savoir quelle ligne provoque ton problème
Je ne sais pourquoi la dernière ligne ci-après ne fonctionne pas.. (err. 438)
Je clôture.
Cordialement.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,Vinaigrette57, vgendron

Vinaigrette57
Suggestion en passant
Inutile d'anonymiser
Excel le fait pour toi !
Si tu suffit de créer ex nihilo un fichier Excel (ou deux dans le cas présent) exemple qui ne sert qu'à illustrer la problématique rencontrée.
On a pas besoin du fichier original.
 

Discussions similaires

Réponses
2
Affichages
197
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…