Variable d'un autre fichier

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Leskwal

XLDnaute Occasionnel
Bonsoir;

Pas franchement top niveau VB, je sollicite votre clairvoyance. 😀

Comment dans un fichier N déclarer une variable V prenant la valeur de A1 de la feuil 1 et ensuite réutiliser cette variable dans un fichier N1 et la coller dans feuil 1 du fichier N1 ? Le fichier N1 s'ouvre en cliquant sur un bouton.

Un grand Merci d'avance pour votre aide


Pascal
 
Re : Variable d'un autre fichier

Bonjour,

Pas vraiment de problème il me semble :

Code:
v = Workbooks("N").Sheets("Feuil1").Range("A1")
Workbooks("N1").Sheets("Feuil1").Range("A1") = v

Mais si v ne sert qu'à ça, je ne vois pas son utilité...

Code:
Workbooks("N1").Sheets("Feuil1").Range("A1") = Workbooks("N").Sheets("Feuil1").Range("A1")

A+
 
Re : Variable d'un autre fichier

Encore une chose : j'avais oublié une étape.

Comment dans un fichier N déclarer une variable V prenant la valeur de A1 de la feuil 1 et ensuite réutiliser cette variable dans un fichier N1 et la coller dans feuil 1 du fichier N1 ?

Le fichier N1 s'ouvre en cliquant sur un bouton.

Enfin disons que je choisis en cliquant sur le bouton, le fichier à ouvrir par le biais de la fenêtre windows; N1 mais ça peut-être N2 ou Fanfrelet.xlsm.... En conséquence, le fichier ouvert peut avoir un nom différent à chaque fois.... 😀

Encore Merci

Pascal
 
Re : Variable d'un autre fichier

Re Bonjour le Forum, job75

J'ai joint en "Fichier joint" 😀 des fichiers qui expliqueront ma problématique....

Lancer où Classeur1 où Classeur2 ensuite appuyez sur le bouton, recherchez le fichier "Numéro_REF" et ma demande apparaît...😀


UN TRÈS GRAND MERCI D'avance.

Pascal
 

Pièces jointes

Re : Variable d'un autre fichier

Bonsoir Leskwal,

Je ne sais pas transmettre des variables dans une procédure d'un autre fichier, mais voici une solution dans ce cas particulier.

Dans les fichiers qui lancent l'ouverture, code de la feuille :

Code:
Private Sub CommandButton1_Click()
Dim M As String, Nomfich As String
M = "Numéro_REF"
Nomfich = ActiveWorkbook.Name
Application.Dialogs(xlDialogOpen).Show M & "*" & ".xls"
[COLOR="Red"]SendKeys Nomfich 'envoi de touches[/COLOR]
End Sub

Dans le fichier à ouvrir, code dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
UserForm1.Show [COLOR="red"][B]0[/B][/COLOR]
[COLOR="Red"]UserForm1.TextBox1.SetFocus 'si nécessaire[/COLOR]
End Sub

Edit : il y a un problème avec SendKeys, les parenthèses ne sont pas envoyées...

A+
 

Pièces jointes

Dernière édition:
Re : Variable d'un autre fichier

Re,

Une solution pour régler ce problème des parenthèses, les remplacer par des caractères interdits pour les noms de fichiers, * et ? :

Dans les fichiers qui lancent l'ouverture, code de la feuille :

Code:
Private Sub CommandButton1_Click()
Dim M As String, Nomfich As String
M = "Numéro_REF"
[COLOR="Red"]Nomfich = Replace(ActiveWorkbook.Name, "(", "*")
Nomfich = Replace(Nomfich, ")", "?")[/COLOR]
Application.Dialogs(xlDialogOpen).Show M & "*" & ".xls"
SendKeys Nomfich 'envoi de touches
End Sub

Dans le fichier à ouvrir, code dans l'USF :

Code:
Private Sub TextBox1_Change()
TextBox1 = Replace(TextBox1, "*", "(")
TextBox1 = Replace(TextBox1, "?", ")")
End Sub

A+
 

Pièces jointes

Re : Variable d'un autre fichier

Re,

Une autre manière de faire, bien meilleure je pense : stocker le nom du fichier dans un nom du classeur (du menu Insertion-Nom-Définir) et faire remplir la TextBox par la macro temporisée Remplissage.

Dans les fichiers qui lancent l'ouverture, code de la feuille :

Code:
Private Sub CommandButton1_Click()
Dim M As String, Nomfich As String
M = "Numéro_REF"
Nomfich = ActiveWorkbook.Name
Application.Dialogs(xlDialogOpen).Show M & "*" & ".xls"
[COLOR="Red"]ActiveWorkbook.Names.Add Name:="Nomfich", RefersTo:=Nomfich[/COLOR]
End Sub

Dans le fichier à ouvrir, code dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
UserForm1.Show 0
[COLOR="Red"]Application.OnTime Now, "Remplissage"[/COLOR]
End Sub

Dans le fichier à ouvrir, code dans un Module :

Code:
Sub Remplissage()
Dim txt As String
txt = ThisWorkbook.Names("Nomfich")
UserForm1.TextBox1 = Mid(txt, 3, Len(txt) - 3) 'retire = et les guillemets
End Sub

Bonne nuit.

A+
 

Pièces jointes

Dernière édition:
Re : Variable d'un autre fichier

Re

J'ai ajouté ta proposition, dans la petite application que je "développe" 😀

et bien : CA MARCHE DU TONNERRE....

Encore Merci.

Une petite chose qui coince encore.

Concernant ma demande première tout est parfait mais j'avais oublié de préciser que Numéro_REF(2) dans mon exemple peut s'ouvrir par le biais de Classeur1(2) ou n'importe quel autre même fichier renommé, MAIS il peut être aussi ouvert (Numéro_REF(2)) en direct.

CONSTAT : Dans le textbox, reste inscrit le dernier nom du fichier ouvert !!
Dans l'appli que je développe ce textbox me sert de condition pour déclencher une Macro. (Si Différent de "" alors ...sinon...).

Et comme il est toujours rempli : ma macro ne se déclenche pas.


Ma question : Comment, en quittant le fichier Numéro_REF(2), vider le textbox ??



Et .... encore Merci

Pascal
 
Re : Variable d'un autre fichier

Bonjour Leskwal, le forum,

Encore un point à corriger.

J'utilisais ActiveWorkbook mais ça ne va pas si le fichier n'est pas ouvert ou si sa fenêtre est masquée.

Dans le fichier qui lance l'ouverture, code de la feuille, écrire donc :

Code:
Private Sub CommandButton1_Click()
Dim M As String, Nomfich As String, n As Integer
M = "Numéro_REF"
Nomfich = [COLOR="Red"]ThisWorkbook[/COLOR].Name
n = Workbooks.Count
Application.Dialogs(xlDialogOpen).Show M & "*" & ".xls"
If Workbooks.Count > n Then [COLOR="Red"]Workbooks(n + 1)[/COLOR].Names.Add Name:="Nomfich", RefersTo:=Nomfich
End Sub

A+
 

Pièces jointes

Dernière édition:
Re : Variable d'un autre fichier

Re,

Je n'avais pas vu le post précédent :


Ma question : Comment, en quittant le fichier Numéro_REF(2), vider le textbox ??
l

Alors cette macro dans le ThisWorkbook du fichier à ouvrir :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
ThisWorkbook.Names("Nomfich").Delete
ThisWorkbook.Close True
End Sub

A+
 

Pièces jointes

Re : Variable d'un autre fichier

Re,

Quelque chose d'un peu mieux dans le code de l'UserForm :

Code:
Private Sub CommandButton1_Click()
If Workbooks.Count = 1 Then [COLOR="Red"]Application.Quit[/COLOR] Else ThisWorkbook.Close True
End Sub

Et dans le ThisWorkbook :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
ThisWorkbook.Names("Nomfich").Delete
[COLOR="Red"]ThisWorkbook.Save[/COLOR]
End Sub

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
32
Affichages
1 K
Retour