OVH Cloud OVH Cloud

macro excel

11 réponses
Avatar
celine
Bonjour a tous,

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" ??

Merci d'avance a tous pour votre aide.

Bonne journée
Céline

1 réponse

1 2
Avatar
michdenis
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)

Dim Fich As String, X, Wk As Workbook

Fich = Dir(Chemin & "*.xls")

Application.ScreenUpdating = False
Application.EnableEvents = False

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 ?
> >> >
> >> > ;-))
> >> >
> >>
> >>
> >>
>
>
>


1 2