Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2
Avatar
Daniel.C
Bonjour.
Poste un peu plus de ton code. Comme la partie "récupération" n'y figure
pas, ce n'est pas facile de t'aider. Est-ce que tu as un message d'erreur,
ou la macro s'arrête elle sans raison apparente ?
Cordialement.
Daniel
"celine" a écrit dans le message de news:

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:PlanningPlanning 2008"

'LUNDI 1 SEPTEMBRE 2008

Fich = Dir("T:PlanningPlanning 2008SEPTEMBRE 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


Avatar
celine
REbonjour

voici la macro:

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

etc...

End Function

La macro s'arrete toute seule.

Merci pour votre aide

Céline




"Daniel.C" a écrit :

Bonjour.
Poste un peu plus de ton code. Comme la partie "récupération" n'y figure
pas, ce n'est pas facile de t'aider. Est-ce que tu as un message d'erreur,
ou la macro s'arrête elle sans raison apparente ?
Cordialement.
Daniel
"celine" a écrit dans le message de news:

> 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:PlanningPlanning 2008"
>
> 'LUNDI 1 SEPTEMBRE 2008
>
> Fich = Dir("T:PlanningPlanning 2008SEPTEMBRE 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





Avatar
Daniel.C
La variable Ligne n'est pas initialisée au moment du traitement du premier
fichier.
Daniel
"celine" a écrit dans le message de news:

REbonjour

voici la macro:

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

etc...

End Function

La macro s'arrete toute seule.

Merci pour votre aide

Céline




"Daniel.C" a écrit :

Bonjour.
Poste un peu plus de ton code. Comme la partie "récupération" n'y figure
pas, ce n'est pas facile de t'aider. Est-ce que tu as un message
d'erreur,
ou la macro s'arrête elle sans raison apparente ?
Cordialement.
Daniel
"celine" a écrit dans le message de
news:

> 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:PlanningPlanning 2008"
>
> 'LUNDI 1 SEPTEMBRE 2008
>
> Fich = Dir("T:PlanningPlanning 2008SEPTEMBRE 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







Avatar
michdenis
| 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 ?

;-))
Avatar
Daniel.C
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 ?

;-))



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





Avatar
Daniel.C
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 ?
>
> ;-))
>







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





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


Avatar
Daniel.C
Heu non, parce qu'il faut soit mettre :
Ligne=6
dans la fonction
soit définir la variable comme publique au niveau de la première macro.
Le problème ne semble pas là car ta macro ne doit pas s'arrêter sans message
d'erreur. Est-ce que le premier clsseur est bien traité ? Quels sont les
noms de tes classeurs ? Quel est le nom exact de la feuille "Lundi 1
septembre" (précise bien les minuscules et les majuscules; le mieux est de
faire un copier / Coller du nom). La feuille "Liste " a-t-elle bien un
espace après le mot "Liste" ?
Peux-tu mettre ton classeur sur www.cjoint.com en effaçant les données
confidentielles ? Si tu pouvais mettre également le classeur qui pose
problème, ce serait bien.
Daniel
"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