OVH Cloud OVH Cloud

Nom de feuille variable

8 réponses
Avatar
Charles
Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y a=20
longtemps pas mal de programmation VB. Je veux me=20
replonger dedans :)=20
J'ai un petit souci que je vous expose de suite en=20
esp=E9rant qu'une bonne =E2me voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604=20
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin o=F9 je lance ma macro, je=20
rentre dans une cellule (5,9) par exemple, 020604 et=20
j'aimerais qu'il m'ouvre le classeur et qu'il d=E9finisse la=20
feuille, ie :

Set FichierDepart =3D Workbooks.Open(Resultat.Cells(5, 9)=20
& ".xls")
Set Depart =3D FichierDepart.Worksheets(Resultat.Cells(5,9))

MAIS ca ne marche pas. La d=E9finition du classeur marche=20
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans =EAtre=20
oblig=E9 de mettre le signe ' avant ?!

Un grand merci par avance et j'esp=E8re venir en aide=20
prochainement avec mes quelques connaissances !

Bonne soir=E9e !!

Charles

8 réponses

Avatar
Alain CROS
Bonjour.

Essaye comme ça.

Sub test()
Dim FichierDepart As Workbook
Dim Depart As Worksheet
Set FichierDepart = Workbooks.Open(Worksheets("Resultat").Cells(5, 9) & ".xls")
Set Depart = FichierDepart.Worksheets(ThisWorkbook.Sheets("Resultat").Cells(5, 9).Value)
MsgBox Depart.[A1]
Set FichierDepart = Nothing
Set Depart = Nothing
End Sub

Pour conserver le 0, tu est obligé de mettre ' pour que ce soit un texte car le nom de fichier est du texte.

Alain CROS.

"Charles" a écrit dans le message de news: 07e101c35a9a$01ce3320$
Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y a
longtemps pas mal de programmation VB. Je veux me
replonger dedans :)
J'ai un petit souci que je vous expose de suite en
espérant qu'une bonne âme voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin où je lance ma macro, je
rentre dans une cellule (5,9) par exemple, 020604 et
j'aimerais qu'il m'ouvre le classeur et qu'il définisse la
feuille, ie :

Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)
& ".xls")
Set Depart = FichierDepart.Worksheets(Resultat.Cells(5,9))

MAIS ca ne marche pas. La définition du classeur marche
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans être
obligé de mettre le signe ' avant ?!

Un grand merci par avance et j'espère venir en aide
prochainement avec mes quelques connaissances !

Bonne soirée !!

Charles
Avatar
Hervé
Salut Charles,
En espérant avoir à peu près compris se que tu veux (adapte de toutes
façon). La proc est à mettre dans le module de ta feuille. Si la valeur
change dans la cellule I5 alors la proc est exécutée. A toi de voir si cela
te convient comme début sinon revient :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cl As Workbook
Dim NomClasseur As String
Dim Chemin As String

If Not Intersect(Target, [I5]) Is Nothing Then

NomClasseur = Cells(5, 9) & ".xls"

Chemin = InputBox("Indiquez le chemin du classeur '" _
& NomClasseur & "'", "Chemin.")

If Chemin = "" Then MsgBox "Le champ est vide, le classeur '" _
& NomClasseur & "' ne sera pas ouvert !": Exit Sub

If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""

If Dir(Chemin & NomClasseur) <> "" Then
Set Cl = Workbooks.Open(Chemin & NomClasseur)
Else
MsgBox "Le classeur :'" _
& NomClasseur & "' n'existe pas !" & _
" ou le chemin :'" & Chemin & "' n'est pas valide." _
& vbCrLf & vbCrLf & "Vérifiez l'orthographe !"
Exit Sub
End If

'ici ton code de traitement...

End If

Set Cl = Nothing
End Sub

Hervé.

"Charles" a écrit dans le message news:
07e101c35a9a$01ce3320$
Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y a
longtemps pas mal de programmation VB. Je veux me
replonger dedans :)
J'ai un petit souci que je vous expose de suite en
espérant qu'une bonne âme voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin où je lance ma macro, je
rentre dans une cellule (5,9) par exemple, 020604 et
j'aimerais qu'il m'ouvre le classeur et qu'il définisse la
feuille, ie :

Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)
& ".xls")
Set Depart = FichierDepart.Worksheets(Resultat.Cells(5,9))

MAIS ca ne marche pas. La définition du classeur marche
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans être
obligé de mettre le signe ' avant ?!

Un grand merci par avance et j'espère venir en aide
prochainement avec mes quelques connaissances !

Bonne soirée !!

Charles
Avatar
Charles
Merci mais mon problème n'était pas d'ouvrir un classeur
mais de définir le nom d'une feuille de classeur.

Par exemple, mon classeur ouvert qui s'appelle 020603.xls
a une unique feuille qui s'appelle aussi 020603. Je veux
simplement pouvoir définir ce nom de feuille variable
(suivant ce qui est entré en cellule I5)

FichierDepart est le nom du classeur ouvert. Aucun
problème à ce niveau
Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)_
& ".xls")

Par contre, Depart ne marche pas.
Set Depart = FichierDepart.Worksheets(Resultat.Cells(5,9))

Merci d'avance et bonne journée !!

-----Message d'origine-----
Salut Charles,
En espérant avoir à peu près compris se que tu veux
(adapte de toutes

façon). La proc est à mettre dans le module de ta
feuille. Si la valeur

change dans la cellule I5 alors la proc est exécutée. A
toi de voir si cela

te convient comme début sinon revient :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cl As Workbook
Dim NomClasseur As String
Dim Chemin As String

If Not Intersect(Target, [I5]) Is Nothing Then

NomClasseur = Cells(5, 9) & ".xls"

Chemin = InputBox("Indiquez le chemin du classeur '" _
& NomClasseur & "'", "Chemin.")

If Chemin = "" Then MsgBox "Le champ est vide, le
classeur '" _

& NomClasseur & "' ne sera pas ouvert !": Exit Sub

If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""

If Dir(Chemin & NomClasseur) <> "" Then
Set Cl = Workbooks.Open(Chemin & NomClasseur)
Else
MsgBox "Le classeur :'" _
& NomClasseur & "' n'existe pas !" & _
" ou le chemin :'" & Chemin & "' n'est pas
valide." _

& vbCrLf & vbCrLf & "Vérifiez l'orthographe !"
Exit Sub
End If

'ici ton code de traitement...

End If

Set Cl = Nothing
End Sub

Hervé.

"Charles" a écrit dans le message
news:

07e101c35a9a$01ce3320$
Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y a
longtemps pas mal de programmation VB. Je veux me
replonger dedans :)
J'ai un petit souci que je vous expose de suite en
espérant qu'une bonne âme voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin où je lance ma macro, je
rentre dans une cellule (5,9) par exemple, 020604 et
j'aimerais qu'il m'ouvre le classeur et qu'il définisse la
feuille, ie :

Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)
& ".xls")
Set Depart = FichierDepart.Worksheets(Resultat.Cells(5,9))

MAIS ca ne marche pas. La définition du classeur marche
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans être
obligé de mettre le signe ' avant ?!

Un grand merci par avance et j'espère venir en aide
prochainement avec mes quelques connaissances !

Bonne soirée !!

Charles


.



Avatar
Charles
Bonjour,

La syntaxe n'a pas l'air correct dans les deux Set car il
me met un message d'erreur.

Merci
-----Message d'origine-----
Bonjour.

Essaye comme ça.

Sub test()
Dim FichierDepart As Workbook
Dim Depart As Worksheet
Set FichierDepart = Workbooks.Open(Worksheets
("Resultat").Cells(5, 9) & ".xls")

Set Depart = FichierDepart.Worksheets(ThisWorkbook.Sheets
("Resultat").Cells(5, 9).Value)

MsgBox Depart.[A1]
Set FichierDepart = Nothing
Set Depart = Nothing
End Sub

Pour conserver le 0, tu est obligé de mettre ' pour que
ce soit un texte car le nom de fichier est du texte.


Alain CROS.

"Charles" a écrit dans le message
de news: 07e101c35a9a$01ce3320$

Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y a
longtemps pas mal de programmation VB. Je veux me
replonger dedans :)
J'ai un petit souci que je vous expose de suite en
espérant qu'une bonne âme voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin où je lance ma macro, je
rentre dans une cellule (5,9) par exemple, 020604 et
j'aimerais qu'il m'ouvre le classeur et qu'il définisse la
feuille, ie :

Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)
& ".xls")
Set Depart = FichierDepart.Worksheets(Resultat.Cells(5,9))

MAIS ca ne marche pas. La définition du classeur marche
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans être
obligé de mettre le signe ' avant ?!

Un grand merci par avance et j'espère venir en aide
prochainement avec mes quelques connaissances !

Bonne soirée !!

Charles


.



Avatar
Alain CROS
Bonjour.

Cette proc fonctionne chez moi.
Quel message d'erreur ?
N'y aurait il point du rouge dans l'éditeur vba ?

Alain CROS.

"Charles" a écrit dans le message de news: 07f101c35b2d$8aa3ea80$
Bonjour,

La syntaxe n'a pas l'air correct dans les deux Set car il
me met un message d'erreur.

Merci
-----Message d'origine-----
Bonjour.

Essaye comme ça.

Sub test()
Dim FichierDepart As Workbook
Dim Depart As Worksheet
Set FichierDepart = Workbooks.Open(Worksheets
("Resultat").Cells(5, 9) & ".xls")

Set Depart = FichierDepart.Worksheets(ThisWorkbook.Sheets
("Resultat").Cells(5, 9).Value)

MsgBox Depart.[A1]
Set FichierDepart = Nothing
Set Depart = Nothing
End Sub

Pour conserver le 0, tu est obligé de mettre ' pour que
ce soit un texte car le nom de fichier est du texte.


Alain CROS.

"Charles" a écrit dans le message
de news: 07e101c35a9a$01ce3320$

Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y a
longtemps pas mal de programmation VB. Je veux me
replonger dedans :)
J'ai un petit souci que je vous expose de suite en
espérant qu'une bonne âme voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin où je lance ma macro, je
rentre dans une cellule (5,9) par exemple, 020604 et
j'aimerais qu'il m'ouvre le classeur et qu'il définisse la
feuille, ie :

Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)
& ".xls")
Set Depart = FichierDepart.Worksheets(Resultat.Cells(5,9))

MAIS ca ne marche pas. La définition du classeur marche
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans être
obligé de mettre le signe ' avant ?!

Un grand merci par avance et j'espère venir en aide
prochainement avec mes quelques connaissances !

Bonne soirée !!

Charles


.



Avatar
Charles
j'ai trouvé ! c'était tout simplement ActiveSheet qu'il
fallait utiliser !
J'ai oublié la plupart de la syntaxe ...

Merci à tous pour votre aide !!!

-----Message d'origine-----
Merci mais mon problème n'était pas d'ouvrir un classeur
mais de définir le nom d'une feuille de classeur.

Par exemple, mon classeur ouvert qui s'appelle 020603.xls
a une unique feuille qui s'appelle aussi 020603. Je veux
simplement pouvoir définir ce nom de feuille variable
(suivant ce qui est entré en cellule I5)

FichierDepart est le nom du classeur ouvert. Aucun
problème à ce niveau
Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)_
& ".xls")

Par contre, Depart ne marche pas.
Set Depart = FichierDepart.Worksheets(Resultat.Cells(5,9))

Merci d'avance et bonne journée !!

-----Message d'origine-----
Salut Charles,
En espérant avoir à peu près compris se que tu veux
(adapte de toutes

façon). La proc est à mettre dans le module de ta
feuille. Si la valeur

change dans la cellule I5 alors la proc est exécutée. A
toi de voir si cela

te convient comme début sinon revient :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cl As Workbook
Dim NomClasseur As String
Dim Chemin As String

If Not Intersect(Target, [I5]) Is Nothing Then

NomClasseur = Cells(5, 9) & ".xls"

Chemin = InputBox("Indiquez le chemin du classeur '"
_


& NomClasseur & "'", "Chemin.")

If Chemin = "" Then MsgBox "Le champ est vide, le
classeur '" _

& NomClasseur & "' ne sera pas ouvert !": Exit
Sub



If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""

If Dir(Chemin & NomClasseur) <> "" Then
Set Cl = Workbooks.Open(Chemin & NomClasseur)
Else
MsgBox "Le classeur :'" _
& NomClasseur & "' n'existe pas !" & _
" ou le chemin :'" & Chemin & "' n'est pas
valide." _

& vbCrLf & vbCrLf & "Vérifiez l'orthographe !"
Exit Sub
End If

'ici ton code de traitement...

End If

Set Cl = Nothing
End Sub

Hervé.

"Charles" a écrit dans le message
news:

07e101c35a9a$01ce3320$
Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y
a


longtemps pas mal de programmation VB. Je veux me
replonger dedans :)
J'ai un petit souci que je vous expose de suite en
espérant qu'une bonne âme voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin où je lance ma macro, je
rentre dans une cellule (5,9) par exemple, 020604 et
j'aimerais qu'il m'ouvre le classeur et qu'il définisse
la


feuille, ie :

Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)
& ".xls")
Set Depart = FichierDepart.Worksheets(Resultat.Cells
(5,9))



MAIS ca ne marche pas. La définition du classeur marche
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans être
obligé de mettre le signe ' avant ?!

Un grand merci par avance et j'espère venir en aide
prochainement avec mes quelques connaissances !

Bonne soirée !!

Charles


.

.





Avatar
Charles
Bonjour,

Dès la première syntaxe Set FichierDepart = Workbooks.Open
(Worksheets("Resultat").Cells(5, 9) & ".xls")
il s'arrête.

Sinon j'ai trouvé la réponse à ma question en fin de
compte. Mais j'aimerais bien savoir pourquoi cela
fonctionne chez toi et pas chez moi.

Bonne journée,

Charles


-----Message d'origine-----
Bonjour.

Cette proc fonctionne chez moi.
Quel message d'erreur ?
N'y aurait il point du rouge dans l'éditeur vba ?

Alain CROS.

"Charles" a écrit dans le message
de news: 07f101c35b2d$8aa3ea80$

Bonjour,

La syntaxe n'a pas l'air correct dans les deux Set car il
me met un message d'erreur.

Merci
-----Message d'origine-----
Bonjour.

Essaye comme ça.

Sub test()
Dim FichierDepart As Workbook
Dim Depart As Worksheet
Set FichierDepart = Workbooks.Open(Worksheets
("Resultat").Cells(5, 9) & ".xls")

Set Depart = FichierDepart.Worksheets(ThisWorkbook.Sheets
("Resultat").Cells(5, 9).Value)

MsgBox Depart.[A1]
Set FichierDepart = Nothing
Set Depart = Nothing
End Sub

Pour conserver le 0, tu est obligé de mettre ' pour que
ce soit un texte car le nom de fichier est du texte.


Alain CROS.

"Charles" a écrit dans le message
de news: 07e101c35a9a$01ce3320$

Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y
a


longtemps pas mal de programmation VB. Je veux me
replonger dedans :)
J'ai un petit souci que je vous expose de suite en
espérant qu'une bonne âme voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin où je lance ma macro, je
rentre dans une cellule (5,9) par exemple, 020604 et
j'aimerais qu'il m'ouvre le classeur et qu'il définisse
la


feuille, ie :

Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)
& ".xls")
Set Depart = FichierDepart.Worksheets(Resultat.Cells
(5,9))



MAIS ca ne marche pas. La définition du classeur marche
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans être
obligé de mettre le signe ' avant ?!

Un grand merci par avance et j'espère venir en aide
prochainement avec mes quelques connaissances !

Bonne soirée !!

Charles


.




.




Avatar
Charles
Je te rassure , j'en suis quand même pas à ce stade !!
C'est bien sûr écrit correctement que je te dis qu'il y a
message d'erreur. De toutes façons je n'aurais pas pu
lancer la macro en l'écrivant sur 2 lignes.

Charles

-----Message d'origine-----
Bonjour.

tu mets ça sur une seule ligne
de Set FichierDepart .... à .... & ".xls")
pareil pour l'autre
de Set Depart .... à .... Value)

Alain CROS.

"Charles" a écrit dans le message
de news: 080e01c35bec$a9dc6a70$

Bonjour,

Dès la première syntaxe Set FichierDepart = Workbooks.Open
(Worksheets("Resultat").Cells(5, 9) & ".xls")
il s'arrête.

Sinon j'ai trouvé la réponse à ma question en fin de
compte. Mais j'aimerais bien savoir pourquoi cela
fonctionne chez toi et pas chez moi.

Bonne journée,

Charles


-----Message d'origine-----
Bonjour.

Cette proc fonctionne chez moi.
Quel message d'erreur ?
N'y aurait il point du rouge dans l'éditeur vba ?

Alain CROS.

"Charles" a écrit dans le message
de news: 07f101c35b2d$8aa3ea80$

Bonjour,

La syntaxe n'a pas l'air correct dans les deux Set car il
me met un message d'erreur.

Merci
-----Message d'origine-----
Bonjour.

Essaye comme ça.

Sub test()
Dim FichierDepart As Workbook
Dim Depart As Worksheet
Set FichierDepart = Workbooks.Open(Worksheets
("Resultat").Cells(5, 9) & ".xls")

Set Depart = FichierDepart.Worksheets
(ThisWorkbook.Sheets



("Resultat").Cells(5, 9).Value)
MsgBox Depart.[A1]
Set FichierDepart = Nothing
Set Depart = Nothing
End Sub

Pour conserver le 0, tu est obligé de mettre ' pour que
ce soit un texte car le nom de fichier est du texte.


Alain CROS.

"Charles" a écrit dans le message
de news: 07e101c35a9a$01ce3320$

Bonjour,

Je suis nouveau dans les parages bien qu'ayant fait il y
a


longtemps pas mal de programmation VB. Je veux me
replonger dedans :)
J'ai un petit souci que je vous expose de suite en
espérant qu'une bonne âme voudra bien m'aider !

1) J'ai un classeur Origine qui s'appelle par ex. 020604
qui a une seule feuille s'appelant aussi 020604.
2) Dans un autre classeur Fin où je lance ma macro, je
rentre dans une cellule (5,9) par exemple, 020604 et
j'aimerais qu'il m'ouvre le classeur et qu'il définisse
la


feuille, ie :

Set FichierDepart = Workbooks.Open(Resultat.Cells(5, 9)
& ".xls")
Set Depart = FichierDepart.Worksheets(Resultat.Cells
(5,9))



MAIS ca ne marche pas. La définition du classeur marche
mais pas celle de la feuille. Comment faire svp ?

Par ailleurs, comment faire pour conserver le 0 sans
être



obligé de mettre le signe ' avant ?!

Un grand merci par avance et j'espère venir en aide
prochainement avec mes quelques connaissances !

Bonne soirée !!

Charles


.




.




.