macro sur plusieurs feuilles

boudu

XLDnaute Occasionnel
Bonjour à tous
J'ai un fichier qui ouvre une boite de dialogue au démarrage pour demander la date d'un fichier à générer
La macro crée donc ce fichier dans un répertoire dédié
J'éxecute jusqu'à maintenant la macro sur la feuille "Feuil1" mais je souhaiterais à présent que la date soit cherchée dans tous les onglets car il s'agit d'un planning et le temps passant je n'ai plus de place sur la feuille 1
Voici mon code actuel :
Private Sub Workbook_Open()
Dim Plage As Range
Dim Cellule As Range
Do While Not IsDate(question)
1 On Error Resume Next
question = InputBox("Merci de saisir la date souhaitée au format jj/mm/aaaa", "", , 1000, 3000)
If question = "" Then
Application.DisplayAlerts = False
Application.Quit
Exit Sub
End If
question = CDate(question)
If Year(question) < 2006 Or Year(question) > 2020 Then GoTo 1
Loop
fichier = Day(question) & "-" & Month(question) & "-" & Year(question)
'la ligne suivante permet de faire tourner le code silencieusement
Application.ScreenUpdating = False
Application.EnableEvents = False
'sauvegarde du fichier
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\MOI\Mes documents\REPERTOIRE\Dates\" & fichier, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
MonNom = ActiveWorkbook.Name
ChDir "C:\Documents and Settings\MOI\Mes documents\REPERTOIRE"
Workbooks.Open Filename:= _
"C:\Documents and Settings\MOI\Mes documents\REPERTOIRE\Fichier.xls"
Set Plage = Workbooks("Fichier.xls").Sheets("Feuil1").Range(Cells(3, 2), Cells(1, 256))
For Each Cellule In Plage
If Cellule.Value = question Then
Cellule.Activate
ActiveCell.Offset(0, n).Range("A1:b11").Select
Selection.Copy
Workbooks(MonNom).Activate
Range("b2").Select
Selection.PasteSpecial Paste:=xlAll
End If
Next
Workbooks.Open Filename:="C:\Documents and Settings\MOI\Mes documents\REPERTOIRE\Fichier.xls"
ActiveWindow.Close
……
TRAITEMENT de la commande
……..
Workbooks.Open Filename:="C:\Documents and Settings\MOI\Mes documents\REPERTOIRE\Fichier.xls"
ActiveWindow.Close Savechanges:=False
Application.DisplayAlerts = False
Workbooks(MonNom).Activate
ActiveWindow.Close Savechanges:=True
Application.Quit
End Sub

Le probleme est sur la définition de la variable Plage qui se réfere dans l'état uniquement à Feuil1

Avec mes remerciements
Bonne journée à tous
 

pierrejean

XLDnaute Barbatruc
Re : macro sur plusieurs feuilles

Bonjour boudu

A tester:

Code:
'....
Set Plage = Workbooks("Fichier.xls").Sheets("Feuil1").Range(Cells(3, 2), Cells(1, 256))
For Each sh In Sheets
  If sh.Name <> "Feuil1" Then 'on peut ajouter d'autres exclusions type and sh.name="toto"
   Plage = Application.Union(Plage, Workbooks("Fichier.xls").sh.Range(Cells(3, 2), Cells(1, 256)))
  End If
Next
'....
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : macro sur plusieurs feuilles

Bonjour Boudu, bonjour le forum,

J'ai rajouté une boucle sur tous les onglets de l'onglet Fichier.xls (non testé) :
Code:
Private Sub Workbook_Open()
Dim Plage As Range
Dim Cellule As Range
Dim o As Object 'déclare la variable o (Onglet)


Do While Not IsDate(question)
1     On Error Resume Next
    question = InputBox("Merci de saisir la date souhaitée au format jj/mm/aaaa", "", , 1000, 3000)
    If question = "" Then
        Application.DisplayAlerts = False
        Application.Quit
        Exit Sub
    End If
    question = CDate(question)
    If Year(question) < 2006 Or Year(question) > 2020 Then GoTo 1
Loop
fichier = Day(question) & "-" & Month(question) & "-" & Year(question)
'la ligne suivante permet de faire tourner le code silencieusement
Application.ScreenUpdating = False
Application.EnableEvents = False
'sauvegarde du fichier
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\MOI\Mes documents\REPERTOIRE\Dates\" & fichier, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
MonNom = ActiveWorkbook.Name
ChDir "C:\Documents and Settings\MOI\Mes documents\REPERTOIRE"
Workbooks.Open Filename:= _
"C:\Documents and Settings\MOI\Mes documents\REPERTOIRE\Fichier.xls"
For Each o In Workbooks("Fichier.xls").Sheets
    Set Plage = Workbooks("Fichier.xls").o.Range(Cells(3, 2), Cells(1, 256))
    For Each Cellule In Plage
        If Cellule.Value = question Then
            Cellule.Activate
            ActiveCell.Offset(0, n).Range("A1:b11").Select
            Selection.Copy
            Workbooks(MonNom).Activate
            Range("b2").Select
            Selection.PasteSpecial Paste:=xlAll
        End If
    Next
Next o
Workbooks.Open Filename:="C:\Documents and Settings\MOI\Mes documents\REPERTOIRE\Fichier.xls"
ActiveWindow.Close
'……
'TRAITEMENT de la commande
'……..
Workbooks.Open Filename:="C:\Documents and Settings\MOI\Mes documents\REPERTOIRE\Fichier.xls"
ActiveWindow.Close Savechanges:=False
Application.DisplayAlerts = False
Workbooks(MonNom).Activate
ActiveWindow.Close Savechanges:=True
Application.Quit
End Sub

[Édition]
Bonjour PierreJean on s'est croisé..
 
Dernière édition:

boudu

XLDnaute Occasionnel
Re : macro sur plusieurs feuilles

Bonjour Robert, Pierrejean
Je vous remercie pour vos propositions
Je m'excuse de ce retard pour ma réponse mais l'acces au forum est tres difficile
j'ai testé les 2 solutions mais aucune ne fonctionne
En fait la macro accede à un fichier planning et recopie uniquement les éléments concernant la date trouvée
Comme vous l'avez constaté il y a déjà uns boucle For Each Cellule In Plage et je ne sais pas comment insérer celle qui boucle sur les feuilles
La solution proposée par Robert fait bugger excel et celle proposée par Pierrejean génère un fichier dans le répertoire Dates mais rien n'est recopié depuis le fichier Planning

Si vous avez d'autres pistes, je suis évidemment preneur
Bonne journée
 

pierrejean

XLDnaute Barbatruc
Re : macro sur plusieurs feuilles

Re

Je n'ai pas étudié le contenu de la boucle ,simplement proposé une definition de Plage
En y regardant de près ce contenu m'apparait curieux notemment:

ActiveCell.Offset(0, n).Range("A1:b11").Select

Peux-tu poster un fichier exemple S.T.P ?
 

boudu

XLDnaute Occasionnel
Re : macro sur plusieurs feuilles

Bonjour Pierrejean; Robert, le forum
Ma boite avait effectivement un gros souci d'acces internet hier; ça semble réglé pour le moment
Je mets en pièce jointe 2 fichiers
le premier se nomme choixdate, c'est celui sur lequel j'aimerais apporter la modif
Il faut saisir la date du jour souhaité au démarrage et ça génère un fichier avec juste les éléments du jour concerné. Ce fichier est imprimable.
Dans le fichier planning il y a plusieurs feuilles avec des noms divers et je voudrais que la macro agisse aussi sur ces feuilles, par exemple générer un fichier 15/10/2012 avec les éléments concernés.

Merci et bonne journée à tous
 

Pièces jointes

  • Planning.zip
    39.8 KB · Affichages: 21
  • Planning.zip
    39.8 KB · Affichages: 29
  • Planning.zip
    39.8 KB · Affichages: 22

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko