Activer un workbook avec une valeur de cellule

Bonjour,

J’espère que tout va bien pour vous, je reviens vers vous car j'ai un petit soucis d'écriture.

J'ai une cellule (T1) où vient s'inscrire une valeur, et je cherche à activer le classeur qui porte cette valeur comme nom.

J'ai essayé plusieurs chose avec des Range(T1).value, ou encore en déclarant une variable qui va récupérer cette valeur mais rien n'y fait, j'ai toujours l'erreur de compilation.

Sauriez-vous comment écrire le Workbook (Valeur ou variable qui est égale à cette valeur).activate?

Bien cordialement

Hello

Normalement ce que tu as fait fonctionne

Voici un exemple d une de mes macros et ca marche

Workbooks.Open (ThisWorkbook.Sheets("Main").Range("G6"))

'lien en G6
' si dejà ouvert 
Dim pilote As Workbook
Set pilote = Workbooks(ThisWorkbook.Sheets("Main").Range("G6").Value)

Bonjour, merci de ta réponse.

Malheureusement cela ne fonctionne pas, j'ai essayé :

Set wb = Workbooks(ThisWorkbook.Sheets("AE").Range("T1").Value)

wb.Activate

L'indice n'appartient pas à la sélection

et :

Set wb = Worksheets("AE").Range("T1").Value

wb.Activate

Objet requis

Bonjour,

J’espère que tout va bien pour vous, je reviens vers vous car j'ai un petit soucis d'écriture.

J'ai une cellule (T1) où vient s'inscrire une valeur, et je cherche à activer le classeur qui porte cette valeur comme nom.

J'ai essayé plusieurs chose avec des Range(T1).value, ou encore en déclarant une variable qui va récupérer cette valeur mais rien n'y fait, j'ai toujours l'erreur de compilation.

Sauriez-vous comment écrire le Workbook (Valeur ou variable qui est égale à cette valeur).activate?

Bien cordialement

Bonjour, Pour rappel, l'utilisation de workbokk.activate nécessite que le classeur soit déjà ouvert ; dans le cas contraire il faudra

un workbook open avec l'indication du chemin pour l'ouvrir.

Dim nomfichier as string
nomfichier=range("T1").value  ' (information en T1 dois indiquer nom et format fichier exemple  :  Test.xls )
Workbooks(nomfichier).Activate

Bonjour,

Oui je connais cette contrainte, mais cela ne fonctionne pas j'ai "l'indice n'appartient pas à la sélection".

Je vous donne le code, au cas où cela viendrait d'autre part que cette déclaration

Sub Modifications() Dim numéro As String Dim celluletrouvee As Range Dim ligne As Integer Dim col As Integer Dim wb As Workbook 'N°Retour Set celluletrouvee = Worksheets("Bilan").Range("B3:B10000").Find(numéro, lookat:=xlWhole) If celluletrouvee Is Nothing Then MsgBox ("pas trouvé") End Else ligne = celluletrouvee.Row col = celluletrouvee.Column Cells(ligne, col).Select End If 'Enregistrer modifications dans historique Worksheets("Bilan").Cells(ligne, 1) = Worksheets("AE").Range("I34") Worksheets("Bilan").Cells(ligne, 2) = Worksheets("AE").Range("T1") Worksheets("Bilan").Cells(ligne, 3) = Worksheets("AE").Range("G7") Worksheets("Bilan").Cells(ligne, 4) = Worksheets("AE").Range("P34") Worksheets("Bilan").Cells(ligne, 5) = Worksheets("AE").Range("Q21") Worksheets("Bilan").Cells(ligne, 6) = Worksheets("AE").Range("I35") Worksheets("Bilan").Cells(ligne, 7) = Worksheets("AE").Range("I36") Worksheets("Bilan").Cells(ligne, 8) = Worksheets("AE").Range("R13") Worksheets("Bilan").Cells(ligne, 9) = Worksheets("AE").Range("I50") Worksheets("Bilan").Cells(ligne, 10) = Worksheets("AE").Range("F40") Worksheets("Bilan").Cells(ligne, 11) = Worksheets("AE").Range("Q52") Worksheets("Bilan").Cells(ligne, 12) = Worksheets("AE").Range("I52") Worksheets("Bilan").Cells(ligne, 13) = Worksheets("AE").Range("F53") 'Enregistrer modifications dans ancien classeur Worksheets("AE").Activate 'ActiveSheet.Pictures("Logo AE").Delete 'copie-colle Windows("Projet.xlsm").Activate numéro = Worksheets("AE").Range("T1").Value Sheets("AE").Select Cells.Select Application.CutCopyMode = False Workbooks(numéro).Activate Worksheets("Feuil1").Select Cells.Select ActiveSheet.Paste 'Enregistrement-fermeture ActiveWorkbook.SaveAs Filename:="S:\COMMUN\RETOUR PRODUITS\Projet New fiches\Retours\ " & [T1].Value & ".xlsx" ActiveSheet.Buttons.Delete répertoirePhoto = "S:\COMMUN\RETOUR PRODUITS\Projet New fiches\" 'Lien nom = "Logo AE" Set c = Range("C1:H3") With ActiveSheet .Pictures.Insert(répertoirePhoto & nom & ".jpg").Name = nom .Shapes(nom).Left = c.Left .Shapes(nom).Top = c.Top .Shapes(nom).LockAspectRatio = msoFalse .Shapes(nom).Height = c.Height .Shapes(nom).Width = c.Width End With ActiveWorkbook.Close savechanges:=True MsgBox ("Modifications enregistrées") End Sub

à quel moment exactement tu tombes sur cet erreur ?

puisque c'est une erreur de selection au moment de ton copier coller mais pas forcement du workbook.

J'ai l'erreur au niveau du

"Workbooks(numéro).Activate"

Je ne sais pas s'il faut écrire autrement cette ligne

je ne vois pas du tout de T1 dans ses lignes de code.

Une recherche de cellule oui mais si on connait la référence de la cellule (T1) alors aucun intérêt.

un fichier test peut être pour mieux comprendre ?

La ligne de reprenant la valeur T1 est au dessus

numéro = Worksheets("AE").Range("T1").Value

en fait il faut que tu "set" ton workbook je pense

Sinon regardes je te joins un exemple, la macro est dans le classeur "prems" qui appel le classeur "deue"

les 2 classeurs doivent donc etre ouvert

13deue.xlsx (7.54 Ko)
19prems.xlsm (14.99 Ko)

Le soucis est que dans ta macro, le nom du fichier est défini, dans la mienne, il est défini par la valeur de la cellule T1.

Mon problème ici est que je n'arrive pas à activer le classeur portant le nom (valeur T1).

Je l'ai refait en simplifié dans un autre classeur pour n'avoir que la fonction problématique:

Sub Modifications()

Dim numéro As String

Windows("Classeur1").Activate

Worksheets("Feuil1").Activate

numéro = Worksheets("Feuil1").Range("A1").Value

Workbooks(numéro).Activate

End Sub

Encore une fois, "l'indice n'appartient pas à la sélection" alors qu'en passant sur "numéro" dans mon code, il m'indique "numéro="19-003" qui est le nom du fichier à activé

et voici, n oublies pas le type de fichier ".xlsx"

6deue.xlsx (7.54 Ko)
8prems.xlsm (16.63 Ko)

Malheureusement j'ai encore la même erreur..

Je me demande si cela ne viendrait pas d'un problème de format entre ma cellule et le nom de mon fichier

9classeur1.xlsm (15.21 Ko)
619-003.xlsx (283.41 Ko)
Sub Modifications()

Dim dos As Workbook

Set dos = Workbooks(ThisWorkbook.Sheets(1).Range("A1").Value)
dos.Activate

End Sub

J ai un tout petit peu modifié ton code et ca fonctionne

Et je ne peux avoir le 19-003.xlsx dans ma cellule, j'aurais obligatoirement 19-003. Il faut que je rajoute le xlsx via mon code pour activer le classeur

Il faut juste modifier comme ca

Set dos = Workbooks(ThisWorkbook.Sheets(1).Range("A1").Value & ".xlsx")

J'ai modifié comme avec ce que tu m'as envoyé mais le problème persiste ..

319-003.xlsx (283.41 Ko)
8classeur1.xlsm (15.21 Ko)

sur le fichier que tu viens d envoyer, tu n as pas fait les modifs

Et avec ce que je t ai dit cela fonctionne chez moi

regardes avec la piece jointe

17classeur1-2.xlsm (14.97 Ko)

Désolé, je n'ai pas enregistré le fichier avant de l'envoyer

22classeur1.xlsm (15.62 Ko)

ton fichier fonctionne chez moi

à moins que ce ne soit pas le cas chez toi tu peux cliquer sur probleme résolu

Rechercher des sujets similaires à "activer workbook valeur"