çà y est, c'est bon !
j'avais déjà bien sûr identifié les objets selon mon application: j'avais
remplacé Classeur2 par SOURCE et Classeur3 par CIBLE
ce qui bloquait, c'est qu'il fallait écrire SOURCE.xls et CIBLE.xls
pour ma gouverne, dans quel cas doit-on écrire le .xls ?
Merci beaucoup à Michdenis et aussi à Daniel pour leur patience (et leur
science)
Marc D
"michdenis" a écrit dans le message de
news:Bonjour Marc,
Est-ce que ton classeur porte le nom de Classeur2 ? Tu dois pour le moins
prendre le temps d'identifier les objets selon tonapplication... Excel ne peut pas deviner !!! N'oublie pas d'y ajouter
l'extension si ton classeur est déjà enregistréeWith Workbooks("NomDeTonClasseur.xls")
Applique la même chose pour le classeur de destination.
Concernant la variable A, comme j'ai défini le type de la variable A As
integer, sa valeur est zéro en début de procédure. Rien àmodifier.
Salutations!
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news:433fea8e$0$30255$
Bonjour Michdenis, merci d'intervenir
je butte encore sur la même erreur:
après la ligne
With Workbooks("Classeur2")
je reçois un message d'erreur
Run-time error '9'
Subscript out of range
une remarque sur l'instruction:
If a = 0 Then
le paramètre "a" ne doit-il pas être initialisé ? ou bien prend-il la
valeur0 par défaut ?
autre remarque: j'ai mis la macro dans la feuille thisWorkbook du fichier
CIBLE, sans succès, puis n'étant pas sûr, j'ai créé un nouveau module
dans
ce même fichier: même résultat
merci
Marc D
"michdenis" a écrit dans le message de
news:%23%Bonjour Marc,
Cette procédure copie toutes les données de toutes les feuilles du
classeur2 vers la feuille1 du classeur3
'---------------------------------
Sub Compilation()
Dim a as Integer, Sh As Worksheet
With Workbooks("Classeur2")
For Each sh In .Worksheets
derlig = sh.Range("A65536").End(xlUp).Row
dercol = sh.Range("IV1").End(xlToLeft).Column
If a = 0 Then
sh.Range("A1", sh.Cells(derlig, dercol)).Copy _
Workbooks("classeur3").Worksheets("Feuil1").Range("A1")
a = 1
Else
sh.Range("A2", sh.Cells(derlig, dercol)).Copy _
Workbooks("classeur3").Worksheets("Feuil1").Range("A65536").End(xlUp)(2)End If
Next
End With
End Sub
'---------------------------------
Salutations!
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news:433fced7$0$16916$
C'est un mystère:
çà ne vient pas de l'ouverture de SOURCE: ils sont actifs tous les 2
(SOURCEet CIBLE) : c'est déjà ce que je faisais hier
voici ce qui se passe quand on déroule la macro pas à pas:
à la deuxième instruction
Workbooks("SOURCE.xls").Activate
le fichier SOURCE est activé, il est ouvert sur l'onglet actif Feuil3
(ilcomporte 3 onglets Feuil1, Feuil2, Feuil3 avec des majuscules)
à la 3ème ligne
Sheets("Feuil1").Rows(1).Copy
c'est tjrs l'onglet Feuil3 qui reste actif,
et on reçoit le message d'erreur:
Run-time error '9'
Subscript out of range
je ne comprends pas bien...
cordialement,
Marc D
"Daniel" a écrit dans le message de
news:J'aurai dû préciser que le classeur "SOURCE.xls" doit être ouvert. Si
cen'est pas le cas, ouvre-le avant d'exécuter la macro ou ajoute :
Workbooks.Open "C:tempSOURCE.xls" (change le répertoire en
conséquence)D'autre part vérifie que le nom de la feuille est bien "Feuil1".
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
denews: 433ef9ca$0$26565$Bon, merci d'avoir pris le temps de me répondre, mais je n'ai pas
réussiàle faire marcher...
J'ai bien créé deux fichiers SOURCE ET CIBLE, et j'ai mis la macro
dansCIBLE.
Mais à l'exécution, j'ai un message d'erreur :
Run-time error '9'
Subscript out of range
en exécutant pas-à-pas, je constate que çà bloque à la 3ème ligne
Sheets("Feuil1").Rows(1).Copy
En relisant la macro, je ne vois pas ce qui cloche...
Une idée ??
Marc D
"Daniel" a écrit dans le message de
news:%Je crois que tu aurais dû initialiser un nouveau fil avec un
nouveautitre.En fouillant dans mes archives, j'ai retrouvé la macro suivante
avecunfichier source en lecture et un fichier "cible" de regroupement.
Je ne me rapelle plus si je l'avais publié. Je le remets à tout
hasard:
Sub test()
Dim Ctr As Long, i As Integer
Workbooks("SOURCE.xls").Activate
Sheets("Feuil1").Rows(1).Copy
Workbooks("CIBLE.xls").Activate
Sheets("Global").Paste
Ctr = 2
Workbooks("SOURCE.xls").Activate
For i = 1 To Sheets.Count
Workbooks("SOURCE.xls").Activate
Sheets(i).Activate
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).Copy
Workbooks("CIBLE.xls").Activate
Sheets("Global").Select
Cells(Ctr, 1).Select
Sheets("Global").Paste
Ctr = Range("A65536").End(xlUp).Row + 1
Next i
End Sub
Un peu bousculé en ce moment avec la rentrée scolaire et le
déménagementdemes gamins, mais ça commence à se calmer.
Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le
messagedenews: 433ea381$0$25975$Bonjour,
voici ce que je voudrais faire:
sur plusieurs onglets d'un fichier, j'ai des données sous forme
delistes(bases de données avec entête de colonnes en première ligne)
les onglets ont tous le même nombre de colonnes, avec les mêmes
entêtesle nombre de lignes est différent d'un onglet à l'autre (chaque
ligneestun
article différent)
je voudrais faire une macro qui rassemble toutes les données des
onglets
en
une seule liste, plus facile à traiter ensuite sous forme de TcD
Information complémentaire:
le fichier ci-dessus est un fichier A de saisie de données : il
estdéposésur un répertoire d'un réseau, et plusieurs participants peuvent
yaccédersimultanément (fichier partagé)
je souhaite que la macro soit dans un autre fichier B, où serait
crééelacompil: cette compil servira de table de données pour un TcD
c'est à cause de ce TcD que je pense préférable de séparer en 2
fichiers
(un
de saisie, et un de traitement)
La macro proposée par Daniel dans les messages précédents marche
bien,mais
elle crée la compil sous forme d'un onglet Global dans le
fichier
initial
Merci de votre aide
Marc D
"Daniel" a écrit dans le message de
news:%Bonjour.
Désolé, je ne me rappelle plus exactement de la question, sinon
delamajuscule de "Global".
Le mieux serait de reposter l'ensemble de ton problème sans me
l'adresserenparticulier, afin que de plus savants que moi puissent aussi y
réfléchir.Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le
messagede
news: 433e926e$1$25983$J'espère que Daniel verra mon message: nous avons échangé
plusieursfois,mais je ne crois pas qu'il ait vu mon dernier message...
Je lance une nouvelle bouteille à la mer
cordialement,
Marc D
çà y est, c'est bon !
j'avais déjà bien sûr identifié les objets selon mon application: j'avais
remplacé Classeur2 par SOURCE et Classeur3 par CIBLE
ce qui bloquait, c'est qu'il fallait écrire SOURCE.xls et CIBLE.xls
pour ma gouverne, dans quel cas doit-on écrire le .xls ?
Merci beaucoup à Michdenis et aussi à Daniel pour leur patience (et leur
science)
Marc D
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:elGsw91xFHA.1412@TK2MSFTNGP09.phx.gbl...
Bonjour Marc,
Est-ce que ton classeur porte le nom de Classeur2 ? Tu dois pour le moins
prendre le temps d'identifier les objets selon ton
application... Excel ne peut pas deviner !!! N'oublie pas d'y ajouter
l'extension si ton classeur est déjà enregistrée
With Workbooks("NomDeTonClasseur.xls")
Applique la même chose pour le classeur de destination.
Concernant la variable A, comme j'ai défini le type de la variable A As
integer, sa valeur est zéro en début de procédure. Rien à
modifier.
Salutations!
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news:
433fea8e$0$30255$79c14f64@nan-newsreader-05.noos.net...
Bonjour Michdenis, merci d'intervenir
je butte encore sur la même erreur:
après la ligne
With Workbooks("Classeur2")
je reçois un message d'erreur
Run-time error '9'
Subscript out of range
une remarque sur l'instruction:
If a = 0 Then
le paramètre "a" ne doit-il pas être initialisé ? ou bien prend-il la
valeur
0 par défaut ?
autre remarque: j'ai mis la macro dans la feuille thisWorkbook du fichier
CIBLE, sans succès, puis n'étant pas sûr, j'ai créé un nouveau module
dans
ce même fichier: même résultat
merci
Marc D
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:%23%23nbyU1xFHA.900@TK2MSFTNGP11.phx.gbl...
Bonjour Marc,
Cette procédure copie toutes les données de toutes les feuilles du
classeur2 vers la feuille1 du classeur3
'---------------------------------
Sub Compilation()
Dim a as Integer, Sh As Worksheet
With Workbooks("Classeur2")
For Each sh In .Worksheets
derlig = sh.Range("A65536").End(xlUp).Row
dercol = sh.Range("IV1").End(xlToLeft).Column
If a = 0 Then
sh.Range("A1", sh.Cells(derlig, dercol)).Copy _
Workbooks("classeur3").Worksheets("Feuil1").Range("A1")
a = 1
Else
sh.Range("A2", sh.Cells(derlig, dercol)).Copy _
Workbooks("classeur3").Worksheets("Feuil1").Range("A65536").End(xlUp)(2)
End If
Next
End With
End Sub
'---------------------------------
Salutations!
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news:
433fced7$0$16916$79c14f64@nan-newsreader-07.noos.net...
C'est un mystère:
çà ne vient pas de l'ouverture de SOURCE: ils sont actifs tous les 2
(SOURCE
et CIBLE) : c'est déjà ce que je faisais hier
voici ce qui se passe quand on déroule la macro pas à pas:
à la deuxième instruction
Workbooks("SOURCE.xls").Activate
le fichier SOURCE est activé, il est ouvert sur l'onglet actif Feuil3
(il
comporte 3 onglets Feuil1, Feuil2, Feuil3 avec des majuscules)
à la 3ème ligne
Sheets("Feuil1").Rows(1).Copy
c'est tjrs l'onglet Feuil3 qui reste actif,
et on reçoit le message d'erreur:
Run-time error '9'
Subscript out of range
je ne comprends pas bien...
cordialement,
Marc D
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de
news:OEX35FtxFHA.1284@tk2msftngp13.phx.gbl...
J'aurai dû préciser que le classeur "SOURCE.xls" doit être ouvert. Si
ce
n'est pas le cas, ouvre-le avant d'exécuter la macro ou ajoute :
Workbooks.Open "C:tempSOURCE.xls" (change le répertoire en
conséquence)
D'autre part vérifie que le nom de la feuille est bien "Feuil1".
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
de
news: 433ef9ca$0$26565$79c14f64@nan-newsreader-05.noos.net...
Bon, merci d'avoir pris le temps de me répondre, mais je n'ai pas
réussi
à
le faire marcher...
J'ai bien créé deux fichiers SOURCE ET CIBLE, et j'ai mis la macro
dans
CIBLE.
Mais à l'exécution, j'ai un message d'erreur :
Run-time error '9'
Subscript out of range
en exécutant pas-à-pas, je constate que çà bloque à la 3ème ligne
Sheets("Feuil1").Rows(1).Copy
En relisant la macro, je ne vois pas ce qui cloche...
Une idée ??
Marc D
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de
news:%23U1HYJqxFHA.2212@TK2MSFTNGP15.phx.gbl...
Je crois que tu aurais dû initialiser un nouveau fil avec un
nouveau
titre.
En fouillant dans mes archives, j'ai retrouvé la macro suivante
avec
un
fichier source en lecture et un fichier "cible" de regroupement.
Je ne me rapelle plus si je l'avais publié. Je le remets à tout
hasard
:
Sub test()
Dim Ctr As Long, i As Integer
Workbooks("SOURCE.xls").Activate
Sheets("Feuil1").Rows(1).Copy
Workbooks("CIBLE.xls").Activate
Sheets("Global").Paste
Ctr = 2
Workbooks("SOURCE.xls").Activate
For i = 1 To Sheets.Count
Workbooks("SOURCE.xls").Activate
Sheets(i).Activate
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).Copy
Workbooks("CIBLE.xls").Activate
Sheets("Global").Select
Cells(Ctr, 1).Select
Sheets("Global").Paste
Ctr = Range("A65536").End(xlUp).Row + 1
Next i
End Sub
Un peu bousculé en ce moment avec la rentrée scolaire et le
déménagement
de
mes gamins, mais ça commence à se calmer.
Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le
message
de
news: 433ea381$0$25975$79c14f64@nan-newsreader-05.noos.net...
Bonjour,
voici ce que je voudrais faire:
sur plusieurs onglets d'un fichier, j'ai des données sous forme
de
listes
(bases de données avec entête de colonnes en première ligne)
les onglets ont tous le même nombre de colonnes, avec les mêmes
entêtes
le nombre de lignes est différent d'un onglet à l'autre (chaque
ligne
est
un
article différent)
je voudrais faire une macro qui rassemble toutes les données des
onglets
en
une seule liste, plus facile à traiter ensuite sous forme de TcD
Information complémentaire:
le fichier ci-dessus est un fichier A de saisie de données : il
est
déposé
sur un répertoire d'un réseau, et plusieurs participants peuvent
y
accéder
simultanément (fichier partagé)
je souhaite que la macro soit dans un autre fichier B, où serait
créée
la
compil: cette compil servira de table de données pour un TcD
c'est à cause de ce TcD que je pense préférable de séparer en 2
fichiers
(un
de saisie, et un de traitement)
La macro proposée par Daniel dans les messages précédents marche
bien,
mais
elle crée la compil sous forme d'un onglet Global dans le
fichier
initial
Merci de votre aide
Marc D
"Daniel" <dZZZcolardelle@free.fr> a écrit dans le message de
news:%23lC1BVpxFHA.736@tk2msftngp13.phx.gbl...
Bonjour.
Désolé, je ne me rappelle plus exactement de la question, sinon
de
la
majuscule de "Global".
Le mieux serait de reposter l'ensemble de ton problème sans me
l'adresser
en
particulier, afin que de plus savants que moi puissent aussi y
réfléchir.
Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le
message
de
news: 433e926e$1$25983$79c14f64@nan-newsreader-05.noos.net...
J'espère que Daniel verra mon message: nous avons échangé
plusieurs
fois,
mais je ne crois pas qu'il ait vu mon dernier message...
Je lance une nouvelle bouteille à la mer
cordialement,
Marc D
çà y est, c'est bon !
j'avais déjà bien sûr identifié les objets selon mon application: j'avais
remplacé Classeur2 par SOURCE et Classeur3 par CIBLE
ce qui bloquait, c'est qu'il fallait écrire SOURCE.xls et CIBLE.xls
pour ma gouverne, dans quel cas doit-on écrire le .xls ?
Merci beaucoup à Michdenis et aussi à Daniel pour leur patience (et leur
science)
Marc D
"michdenis" a écrit dans le message de
news:Bonjour Marc,
Est-ce que ton classeur porte le nom de Classeur2 ? Tu dois pour le moins
prendre le temps d'identifier les objets selon tonapplication... Excel ne peut pas deviner !!! N'oublie pas d'y ajouter
l'extension si ton classeur est déjà enregistréeWith Workbooks("NomDeTonClasseur.xls")
Applique la même chose pour le classeur de destination.
Concernant la variable A, comme j'ai défini le type de la variable A As
integer, sa valeur est zéro en début de procédure. Rien àmodifier.
Salutations!
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news:433fea8e$0$30255$
Bonjour Michdenis, merci d'intervenir
je butte encore sur la même erreur:
après la ligne
With Workbooks("Classeur2")
je reçois un message d'erreur
Run-time error '9'
Subscript out of range
une remarque sur l'instruction:
If a = 0 Then
le paramètre "a" ne doit-il pas être initialisé ? ou bien prend-il la
valeur0 par défaut ?
autre remarque: j'ai mis la macro dans la feuille thisWorkbook du fichier
CIBLE, sans succès, puis n'étant pas sûr, j'ai créé un nouveau module
dans
ce même fichier: même résultat
merci
Marc D
"michdenis" a écrit dans le message de
news:%23%Bonjour Marc,
Cette procédure copie toutes les données de toutes les feuilles du
classeur2 vers la feuille1 du classeur3
'---------------------------------
Sub Compilation()
Dim a as Integer, Sh As Worksheet
With Workbooks("Classeur2")
For Each sh In .Worksheets
derlig = sh.Range("A65536").End(xlUp).Row
dercol = sh.Range("IV1").End(xlToLeft).Column
If a = 0 Then
sh.Range("A1", sh.Cells(derlig, dercol)).Copy _
Workbooks("classeur3").Worksheets("Feuil1").Range("A1")
a = 1
Else
sh.Range("A2", sh.Cells(derlig, dercol)).Copy _
Workbooks("classeur3").Worksheets("Feuil1").Range("A65536").End(xlUp)(2)End If
Next
End With
End Sub
'---------------------------------
Salutations!
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news:433fced7$0$16916$
C'est un mystère:
çà ne vient pas de l'ouverture de SOURCE: ils sont actifs tous les 2
(SOURCEet CIBLE) : c'est déjà ce que je faisais hier
voici ce qui se passe quand on déroule la macro pas à pas:
à la deuxième instruction
Workbooks("SOURCE.xls").Activate
le fichier SOURCE est activé, il est ouvert sur l'onglet actif Feuil3
(ilcomporte 3 onglets Feuil1, Feuil2, Feuil3 avec des majuscules)
à la 3ème ligne
Sheets("Feuil1").Rows(1).Copy
c'est tjrs l'onglet Feuil3 qui reste actif,
et on reçoit le message d'erreur:
Run-time error '9'
Subscript out of range
je ne comprends pas bien...
cordialement,
Marc D
"Daniel" a écrit dans le message de
news:J'aurai dû préciser que le classeur "SOURCE.xls" doit être ouvert. Si
cen'est pas le cas, ouvre-le avant d'exécuter la macro ou ajoute :
Workbooks.Open "C:tempSOURCE.xls" (change le répertoire en
conséquence)D'autre part vérifie que le nom de la feuille est bien "Feuil1".
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
denews: 433ef9ca$0$26565$Bon, merci d'avoir pris le temps de me répondre, mais je n'ai pas
réussiàle faire marcher...
J'ai bien créé deux fichiers SOURCE ET CIBLE, et j'ai mis la macro
dansCIBLE.
Mais à l'exécution, j'ai un message d'erreur :
Run-time error '9'
Subscript out of range
en exécutant pas-à-pas, je constate que çà bloque à la 3ème ligne
Sheets("Feuil1").Rows(1).Copy
En relisant la macro, je ne vois pas ce qui cloche...
Une idée ??
Marc D
"Daniel" a écrit dans le message de
news:%Je crois que tu aurais dû initialiser un nouveau fil avec un
nouveautitre.En fouillant dans mes archives, j'ai retrouvé la macro suivante
avecunfichier source en lecture et un fichier "cible" de regroupement.
Je ne me rapelle plus si je l'avais publié. Je le remets à tout
hasard:
Sub test()
Dim Ctr As Long, i As Integer
Workbooks("SOURCE.xls").Activate
Sheets("Feuil1").Rows(1).Copy
Workbooks("CIBLE.xls").Activate
Sheets("Global").Paste
Ctr = 2
Workbooks("SOURCE.xls").Activate
For i = 1 To Sheets.Count
Workbooks("SOURCE.xls").Activate
Sheets(i).Activate
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).Copy
Workbooks("CIBLE.xls").Activate
Sheets("Global").Select
Cells(Ctr, 1).Select
Sheets("Global").Paste
Ctr = Range("A65536").End(xlUp).Row + 1
Next i
End Sub
Un peu bousculé en ce moment avec la rentrée scolaire et le
déménagementdemes gamins, mais ça commence à se calmer.
Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le
messagedenews: 433ea381$0$25975$Bonjour,
voici ce que je voudrais faire:
sur plusieurs onglets d'un fichier, j'ai des données sous forme
delistes(bases de données avec entête de colonnes en première ligne)
les onglets ont tous le même nombre de colonnes, avec les mêmes
entêtesle nombre de lignes est différent d'un onglet à l'autre (chaque
ligneestun
article différent)
je voudrais faire une macro qui rassemble toutes les données des
onglets
en
une seule liste, plus facile à traiter ensuite sous forme de TcD
Information complémentaire:
le fichier ci-dessus est un fichier A de saisie de données : il
estdéposésur un répertoire d'un réseau, et plusieurs participants peuvent
yaccédersimultanément (fichier partagé)
je souhaite que la macro soit dans un autre fichier B, où serait
crééelacompil: cette compil servira de table de données pour un TcD
c'est à cause de ce TcD que je pense préférable de séparer en 2
fichiers
(un
de saisie, et un de traitement)
La macro proposée par Daniel dans les messages précédents marche
bien,mais
elle crée la compil sous forme d'un onglet Global dans le
fichier
initial
Merci de votre aide
Marc D
"Daniel" a écrit dans le message de
news:%Bonjour.
Désolé, je ne me rappelle plus exactement de la question, sinon
delamajuscule de "Global".
Le mieux serait de reposter l'ensemble de ton problème sans me
l'adresserenparticulier, afin que de plus savants que moi puissent aussi y
réfléchir.Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le
messagede
news: 433e926e$1$25983$J'espère que Daniel verra mon message: nous avons échangé
plusieursfois,mais je ne crois pas qu'il ait vu mon dernier message...
Je lance une nouvelle bouteille à la mer
cordialement,
Marc D