J'ai un problème avec des macros. J'ai crée un fichier qui permet de
récupérer des données d'un autre fichier (avec une macro)
Voici la macro
ActiveSheet.Unprotect Password:="Xxxx"
Dim Fich As String, Ligne As Long
Const Chemin = "T:\Planning\Planning 2008\"
'LUNDI 1 SEPTEMBRE 2008
Fich = Dir("T:\Planning\Planning 2008\SEPTEMBRE 2008.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("LUNDI 1 SEPTEMBRE").Select
......
Cependant dans les deux fichiers, j'ai des macros.
La récupération des données dans le deuxième fichier ne se fait pas: elle
s'arrete à l'ouverture du fichier seulement.
Peut etre est ce un problème de macro à désactiver dans le fichier
"planning" ??
Tu aurais besoin d'une procédure qui ressemble à ceci :
'------------------------------------------ Private Sub CommandButton2_Click() Dim Sh As Worksheet, Chemin As String Dim Fich As String, Ligne As Long
Chemin = "T:PlanningPlanning 2008"
Set Sh = ThisWorkbook.Worksheets("Feuil1") Sh.Unprotect Password:="Xxxx" Ligne = 6 Call Récup_Septembre08_1(Sh, Chemin, Ligne) Set Sh = Nothing End Sub '------------------------------------------ Function Récup_Septembre08_1(Sh As Worksheet, _ Chemin As String, Ligne As Long)
Do While Fich <> "" Set Wk = Workbooks.Open(Filename:=Chemin & Fich) X = Wk.Sheets("LUNDI 1 SEPTEMBRE").Range("C4:J24") Sh.Cells(Ligne, 1).Resize(UBound(X, 1), UBound(X, 2)) = X Ligne = Ligne + 20 Wk.Close False Fich = Dir Loop
Set Wk = Nothing Application.EnableEvents = True End Function
"celine" a écrit dans le message de news:
petite précision le début de la macro s'éxécute correctement: cela m'ouvre bien le fichier mais cela se stop avant la sélection de la feuille "Lundi 1 septembre"
Céline
"celine" a écrit :
En fait la macro est séparé en deux macros.
la premiere macro est:
Private Sub CommandButton2_Click() ActiveSheet.Unprotect Password:="Xxxx" Dim Fich As String, Ligne As Long Const Chemin = "T:PlanningPlanning 2008" Ligne = 6 Call Récup_Septembre08_1
Et la deuxième macro est
Function Récup_Septembre08_1() ActiveSheet.Unprotect Password:="Xxxx" Dim Fich As String, Ligne As Long Const Chemin = "T:PlanningPlanning 2008" Fich = Dir("T:PlanningPlanning 2008SEPTEMBRE 2008.xl*") Do While Fich <> "" Workbooks.Open Filename:=Chemin & Fich Sheets("LUNDI 1 SEPTEMBRE").Select Sheets("LUNDI 1 SEPTEMBRE").Range("C4:J24").Copy ThisWorkbook.Sheets("Liste ").Cells(Ligne, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:úlse Ligne = Ligne + 20 Application.CutCopyMode = False Workbooks(Fich).Close False Fich = Dir Loop
Donc il y a bien le numéro de la ligne
Céline
"Daniel.C" a écrit :
> Comme tu n'as pas initialisé Ligne : > Ligne = 1 (ou une autre valeur), la valeur de Ligne est par défaut 0; > "ThisWorkbook.Sheets("Liste ").Cells(Ligne, 1)" > fait donc référence à la ligne 0, ce qui devrait provoquer une erreur, à > moins que tu n'aies mis une ligne "On Error Resume Next" dans la macro > appelant la fonction. Dans ce cas, la copie n'est pas effectuée. > Daniel > "celine" a écrit dans le message de > news: > > > Désolé mais je n'ai pas tout compris > > > > "Daniel.C" a écrit : > > > >> Bonjour. > >> Merci de ta précision. Je n'y avais pas songé ;-) > >> Daniel > >> "michdenis" a écrit dans le message de news: > >> > >> > > >> > | La variable Ligne n'est pas initialisée au moment du traitement > >> > du > >> > premier > >> > | fichier. > >> > > >> > Je ne suis pas d'accord avec cette affirmation. > >> > Comme la variable est déclaré comme "As Long" elle prend > >> > automatiquement la valeur 0.... le seul problème c'est qu'il > >> > n'y a pas de ligne 0 dans Excel ... elle débute à 1. > >> > > >> > Tu veux dire qu'elle doit affectée 1 à la variable ligne > >> > en début de procédure ...! Non ? > >> > > >> > ;-)) > >> > > >> > >> > >> > > >
Tu aurais besoin d'une procédure qui ressemble à ceci :
'------------------------------------------
Private Sub CommandButton2_Click()
Dim Sh As Worksheet, Chemin As String
Dim Fich As String, Ligne As Long
Chemin = "T:PlanningPlanning 2008"
Set Sh = ThisWorkbook.Worksheets("Feuil1")
Sh.Unprotect Password:="Xxxx"
Ligne = 6
Call Récup_Septembre08_1(Sh, Chemin, Ligne)
Set Sh = Nothing
End Sub
'------------------------------------------
Function Récup_Septembre08_1(Sh As Worksheet, _
Chemin As String, Ligne As Long)
Do While Fich <> ""
Set Wk = Workbooks.Open(Filename:=Chemin & Fich)
X = Wk.Sheets("LUNDI 1 SEPTEMBRE").Range("C4:J24")
Sh.Cells(Ligne, 1).Resize(UBound(X, 1), UBound(X, 2)) = X
Ligne = Ligne + 20
Wk.Close False
Fich = Dir
Loop
Set Wk = Nothing
Application.EnableEvents = True
End Function
"celine" <celine@discussions.microsoft.com> a écrit dans le message de news:
589A0809-EC12-4002-9FE4-31FF99128C18@microsoft.com...
petite précision le début de la macro s'éxécute correctement: cela m'ouvre
bien le fichier mais cela se stop avant la sélection de la feuille "Lundi 1
septembre"
Céline
"celine" a écrit :
En fait la macro est séparé en deux macros.
la premiere macro est:
Private Sub CommandButton2_Click()
ActiveSheet.Unprotect Password:="Xxxx"
Dim Fich As String, Ligne As Long
Const Chemin = "T:PlanningPlanning 2008"
Ligne = 6
Call Récup_Septembre08_1
Et la deuxième macro est
Function Récup_Septembre08_1()
ActiveSheet.Unprotect Password:="Xxxx"
Dim Fich As String, Ligne As Long
Const Chemin = "T:PlanningPlanning 2008"
Fich = Dir("T:PlanningPlanning 2008SEPTEMBRE 2008.xl*")
Do While Fich <> ""
Workbooks.Open Filename:=Chemin & Fich
Sheets("LUNDI 1 SEPTEMBRE").Select
Sheets("LUNDI 1 SEPTEMBRE").Range("C4:J24").Copy
ThisWorkbook.Sheets("Liste ").Cells(Ligne, 1).PasteSpecial
Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Ligne = Ligne + 20
Application.CutCopyMode = False
Workbooks(Fich).Close False
Fich = Dir
Loop
Donc il y a bien le numéro de la ligne
Céline
"Daniel.C" a écrit :
> Comme tu n'as pas initialisé Ligne :
> Ligne = 1 (ou une autre valeur), la valeur de Ligne est par défaut 0;
> "ThisWorkbook.Sheets("Liste ").Cells(Ligne, 1)"
> fait donc référence à la ligne 0, ce qui devrait provoquer une erreur, à
> moins que tu n'aies mis une ligne "On Error Resume Next" dans la macro
> appelant la fonction. Dans ce cas, la copie n'est pas effectuée.
> Daniel
> "celine" <celine@discussions.microsoft.com> a écrit dans le message de
> news:
> F59C00DF-4735-4AB0-847B-5CEE741D6FC7@microsoft.com...
> > Désolé mais je n'ai pas tout compris
> >
> > "Daniel.C" a écrit :
> >
> >> Bonjour.
> >> Merci de ta précision. Je n'y avais pas songé ;-)
> >> Daniel
> >> "michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
> >> OycMOXcCJHA.2060@TK2MSFTNGP05.phx.gbl...
> >> >
> >> > | La variable Ligne n'est pas initialisée au moment du traitement
> >> > du
> >> > premier
> >> > | fichier.
> >> >
> >> > Je ne suis pas d'accord avec cette affirmation.
> >> > Comme la variable est déclaré comme "As Long" elle prend
> >> > automatiquement la valeur 0.... le seul problème c'est qu'il
> >> > n'y a pas de ligne 0 dans Excel ... elle débute à 1.
> >> >
> >> > Tu veux dire qu'elle doit affectée 1 à la variable ligne
> >> > en début de procédure ...! Non ?
> >> >
> >> > ;-))
> >> >
> >>
> >>
> >>
>
>
>
Tu aurais besoin d'une procédure qui ressemble à ceci :
'------------------------------------------ Private Sub CommandButton2_Click() Dim Sh As Worksheet, Chemin As String Dim Fich As String, Ligne As Long
Chemin = "T:PlanningPlanning 2008"
Set Sh = ThisWorkbook.Worksheets("Feuil1") Sh.Unprotect Password:="Xxxx" Ligne = 6 Call Récup_Septembre08_1(Sh, Chemin, Ligne) Set Sh = Nothing End Sub '------------------------------------------ Function Récup_Septembre08_1(Sh As Worksheet, _ Chemin As String, Ligne As Long)
Do While Fich <> "" Set Wk = Workbooks.Open(Filename:=Chemin & Fich) X = Wk.Sheets("LUNDI 1 SEPTEMBRE").Range("C4:J24") Sh.Cells(Ligne, 1).Resize(UBound(X, 1), UBound(X, 2)) = X Ligne = Ligne + 20 Wk.Close False Fich = Dir Loop
Set Wk = Nothing Application.EnableEvents = True End Function
"celine" a écrit dans le message de news:
petite précision le début de la macro s'éxécute correctement: cela m'ouvre bien le fichier mais cela se stop avant la sélection de la feuille "Lundi 1 septembre"
Céline
"celine" a écrit :
En fait la macro est séparé en deux macros.
la premiere macro est:
Private Sub CommandButton2_Click() ActiveSheet.Unprotect Password:="Xxxx" Dim Fich As String, Ligne As Long Const Chemin = "T:PlanningPlanning 2008" Ligne = 6 Call Récup_Septembre08_1
Et la deuxième macro est
Function Récup_Septembre08_1() ActiveSheet.Unprotect Password:="Xxxx" Dim Fich As String, Ligne As Long Const Chemin = "T:PlanningPlanning 2008" Fich = Dir("T:PlanningPlanning 2008SEPTEMBRE 2008.xl*") Do While Fich <> "" Workbooks.Open Filename:=Chemin & Fich Sheets("LUNDI 1 SEPTEMBRE").Select Sheets("LUNDI 1 SEPTEMBRE").Range("C4:J24").Copy ThisWorkbook.Sheets("Liste ").Cells(Ligne, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:úlse Ligne = Ligne + 20 Application.CutCopyMode = False Workbooks(Fich).Close False Fich = Dir Loop
Donc il y a bien le numéro de la ligne
Céline
"Daniel.C" a écrit :
> Comme tu n'as pas initialisé Ligne : > Ligne = 1 (ou une autre valeur), la valeur de Ligne est par défaut 0; > "ThisWorkbook.Sheets("Liste ").Cells(Ligne, 1)" > fait donc référence à la ligne 0, ce qui devrait provoquer une erreur, à > moins que tu n'aies mis une ligne "On Error Resume Next" dans la macro > appelant la fonction. Dans ce cas, la copie n'est pas effectuée. > Daniel > "celine" a écrit dans le message de > news: > > > Désolé mais je n'ai pas tout compris > > > > "Daniel.C" a écrit : > > > >> Bonjour. > >> Merci de ta précision. Je n'y avais pas songé ;-) > >> Daniel > >> "michdenis" a écrit dans le message de news: > >> > >> > > >> > | La variable Ligne n'est pas initialisée au moment du traitement > >> > du > >> > premier > >> > | fichier. > >> > > >> > Je ne suis pas d'accord avec cette affirmation. > >> > Comme la variable est déclaré comme "As Long" elle prend > >> > automatiquement la valeur 0.... le seul problème c'est qu'il > >> > n'y a pas de ligne 0 dans Excel ... elle débute à 1. > >> > > >> > Tu veux dire qu'elle doit affectée 1 à la variable ligne > >> > en début de procédure ...! Non ? > >> > > >> > ;-)) > >> > > >> > >> > >> > > >