OVH Cloud OVH Cloud

revenir au mon classeur ?

6 réponses
Avatar
Rick
Bonjour,
j'ai deux classeur different "test.xls" et "tient.xls"
j'ai une macro qui prend une de mes feuilles dans "test.xls" et qui me la
ramenne dans "tient.xls" mais le probleme ses que mon "tient.xls" ne se
nommera pas toujours "tient.xls" il peut aussi s'appeler tient1.xls....
nom.xls.....roger.xls..etc... Comment dire a ma macro de revenir dans le
classeur ou j'etait quelque seconde au paravant avec d'executer ma macro ?

merci

6 réponses

Avatar
Youky
Salut,
nom = ActiveWorkbook.Name
'bla bla et copie
Workbooks(nom).Activate


"Rick" a écrit dans le message de news:

Bonjour,
j'ai deux classeur different "test.xls" et "tient.xls"
j'ai une macro qui prend une de mes feuilles dans "test.xls" et qui me la
ramenne dans "tient.xls" mais le probleme ses que mon "tient.xls" ne se
nommera pas toujours "tient.xls" il peut aussi s'appeler tient1.xls....
nom.xls.....roger.xls..etc... Comment dire a ma macro de revenir dans le
classeur ou j'etait quelque seconde au paravant avec d'executer ma macro ?

merci




Avatar
ST
Au lieu d'utiliser le nom du classeur, tu peux utiliser le numéro d'index du
classeur

Windows(1).Activate => pour activer le premier classeur ouvert

L'ordre correspond à l'ordre d'ouverture du fichier (si je ne me trompe pas)

ST


"Rick" a écrit dans le message de
news:
Bonjour,
j'ai deux classeur different "test.xls" et "tient.xls"
j'ai une macro qui prend une de mes feuilles dans "test.xls" et qui me la
ramenne dans "tient.xls" mais le probleme ses que mon "tient.xls" ne se
nommera pas toujours "tient.xls" il peut aussi s'appeler tient1.xls....
nom.xls.....roger.xls..etc... Comment dire a ma macro de revenir dans le
classeur ou j'etait quelque seconde au paravant avec d'executer ma macro ?

merci




Avatar
Rick
Good
merci a toi
:)

"Youky" a écrit dans le message de news:

Salut,
nom = ActiveWorkbook.Name
'bla bla et copie
Workbooks(nom).Activate


"Rick" a écrit dans le message de news:

Bonjour,
j'ai deux classeur different "test.xls" et "tient.xls"
j'ai une macro qui prend une de mes feuilles dans "test.xls" et qui me la
ramenne dans "tient.xls" mais le probleme ses que mon "tient.xls" ne se
nommera pas toujours "tient.xls" il peut aussi s'appeler tient1.xls....
nom.xls.....roger.xls..etc... Comment dire a ma macro de revenir dans le
classeur ou j'etait quelque seconde au paravant avec d'executer ma macro
?

merci








Avatar
PMO
Bonjour,

S'IL S'AGIT DE CLASSEURS QUI ONT ETE REFERMES ???
L'idée est d'utiliser les fichiers récents que l'on peut voir en cliquant
sur menu Fichier.
Si vous n'avez pas cette option faites Outils/Options onglet Général et
cocher la case
Liste des derniers fichiers utilisés puis mettez le nombre de votre choix
pour "fichiers"

Le code suivant est à copier dans un module standard.
Il fait:
1) Recherche la liste des derniers fichiers utilisés.
2) Ouvre un UserForm dans lequel une ComboBox propose de sélectionner un
fichier.
3) Affiche le chemin du fichier.

Une fois obtenu le chemin du fichier vous pouvez faire votre code pour
l'exploiter.
A vous de faire selon votre projet.

ATTENTION faites le test sur une copie de votre classeur

**********
Option Explicit
Public T()
Public Classeur$
'_________________________
Sub FichiersRecents()
Dim R As RecentFile
Dim i&
Dim UF As Object
Dim L As Object 'MSForms.ComboBox
Dim CB As Object 'MSForms.CommandButton
Dim A$
If Application.RecentFiles.Count = 0 Then Exit Sub
ReDim T(1 To Application.RecentFiles.Count)
For Each R In Application.RecentFiles
i& = i& + 1
T(i&) = R.Path
Next R
On Error GoTo fin
'---- Crée dynamiquement un UserForm ----
Set UF = ThisWorkbook.VBProject _
.VBComponents.Add(3) '(vbext_ct_MSForm)
With UF
.Properties("Caption") = _
"Sélectionnez un classeur"
.Properties("Height") = 400
.Properties("Width") = 420
End With
'---- Crée le bouton de fermeture ----
Set CB = UF.Designer.Controls _
.Add("forms.CommandButton.1")
With CB
.Caption = "OK"
.Left = 170
.Top = 330
End With
'---- Crée le comboBox ----
Set L = UF.Designer.Controls _
.Add("forms.ComboBox.1")
'°°° Ajout du code évènementiel °°°
A$ = "Sub UserForm_Initialize()" & _
vbCrLf & "With ComboBox1" & _
vbCrLf & ".List() " & "= T" & _
vbCrLf & ".Left= 10" & _
vbCrLf & ".Width= 400" & _
vbCrLf & "End With" & _
vbCrLf & "End Sub"
With UF.CodeModule
i& = .CountOfLines
.InsertLines i& + 1, A$
End With
'----
A$ = "Sub CommandButton1_Click()" & _
vbCrLf & "Classeur$ = ComboBox1.Value" & _
vbCrLf & "Unload Me" & _
vbCrLf & "End Sub"
With UF.CodeModule
i& = .CountOfLines
.InsertLines i& + 1, A$
End With
'---- Affiche le UserForm ----
VBA.UserForms.Add(UF.Name).Show
'---- Détruit le UserForm ----
ThisWorkbook.VBProject.VBComponents _
.Remove UF
'---- Récupère le nom du classeur ---
If Classeur$ = "" Then Exit Sub
'//// Vous avez identifié votre classeur ////
'//// et vous pouvez l'ouvrir pour y ////
'//// copier la feuille de test.xls ////
'//// A vous de rajouter le code adéquat ////
MsgBox Classeur$
fin:
End Sub
**********

Cordialement.
--
PMO
Patrick Morange



Bonjour,
j'ai deux classeur different "test.xls" et "tient.xls"
j'ai une macro qui prend une de mes feuilles dans "test.xls" et qui me la
ramenne dans "tient.xls" mais le probleme ses que mon "tient.xls" ne se
nommera pas toujours "tient.xls" il peut aussi s'appeler tient1.xls....
nom.xls.....roger.xls..etc... Comment dire a ma macro de revenir dans le
classeur ou j'etait quelque seconde au paravant avec d'executer ma macro ?

merci





Avatar
Michael
Bonjour,

J'ai une question qui ressemble un peu mais je n'arrive pas a mettre en
place ceci:

memoriser les feuilles actives (pas celle qui est sélectionnée)
traiter plusieurs operations sur certaines feuilles
réactiver ce que j'ai mémorisé

Merci de m'aider.
Michael
Avatar
PMO
Bonjour,

Je ne vois pas ce que vous voulez obtenir.
Soyez plus explicite.

Que veut dire, par exemple,
"memoriser les feuilles actives (pas celle qui est sélectionnée)"
Sont-ce des feuilles de plusieurs classeurs ?

Cordialement.
--
PMO
Patrick Morange




Bonjour,

J'ai une question qui ressemble un peu mais je n'arrive pas a mettre en
place ceci:

memoriser les feuilles actives (pas celle qui est sélectionnée)
traiter plusieurs operations sur certaines feuilles
réactiver ce que j'ai mémorisé

Merci de m'aider.
Michael