OVH Cloud OVH Cloud

grouper des listes de longueur différentes

21 réponses
Avatar
Marc D
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
comment m'y prendre ?

Merci de votre aide
Marc D

10 réponses

1 2 3
Avatar
Daniel
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes. Modifie-le
suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D



Avatar
Marc D
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3), j'ai
ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie bien la
ligne de titres + les lignes de données des 3 onglets (il y en avait 28 au
total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28 lignes
qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant d'aller jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de colonnes ?

Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes. Modifie-le
suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D







Avatar
Daniel
Bizarre. Je n'ai pas ce problème. est-ce qu'un gourou peut se pencher sur le
problème ?
Pour le nombre de colonnes :
remplace :
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
par :
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).copy _
Sheets("Global").Cells(Ctr, 1)
Cordialement.
Daniel

"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c43e6$0$16401$
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3), j'ai
ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie bien la
ligne de titres + les lignes de données des 3 onglets (il y en avait 28 au
total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28 lignes
qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant d'aller
jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de colonnes ?

Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes. Modifie-le
suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D










Avatar
Marc D
pour le nb de colonnes, la modif marche très bien, merci

pour le pb signalé auparavant (lignes des onglets copiées une deuxième fois,
j'ai modifié la macro
For i = 1 To Sheets.Count
en :
For i = 1 To Sheets.Count - 1
et là ça marche,
pourtant, il y avait bien une limite prévue par:
If Sheets(i).Name <> "Global" Then
mais j'ai l'impression que la macro recopie les lignes de tous les onglets,
puis qu'elle prend aussi les lignes de l'onglet "global"

merci encore,

Marc D

"Daniel" a écrit dans le message de
news:%
Bizarre. Je n'ai pas ce problème. est-ce qu'un gourou peut se pencher sur
le

problème ?
Pour le nombre de colonnes :
remplace :
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
par :
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).copy _
Sheets("Global").Cells(Ctr, 1)
Cordialement.
Daniel

"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c43e6$0$16401$
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3), j'ai
ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie bien la
ligne de titres + les lignes de données des 3 onglets (il y en avait 28
au


total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28
lignes


qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant d'aller
jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de colonnes
?



Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes.
Modifie-le



suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D














Avatar
Marc D
autre remarque:
pour éviter des pbs possibles avec la commande Sheets.Count (qui peuvent
apparaître si le classeur comprend d'autres onglets que ceux qu'on veut
compiler),
on pourrait rassembler les onglets à compiler entre deux onglets de nom
prédéfinis (vierges): par exemple A et Z
mais comment modifier la macro (je ne sais pas faire)
merci

Marc D
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news:432c7390$0$16654$
pour le nb de colonnes, la modif marche très bien, merci

pour le pb signalé auparavant (lignes des onglets copiées une deuxième
fois,

j'ai modifié la macro
For i = 1 To Sheets.Count
en :
For i = 1 To Sheets.Count - 1
et là ça marche,
pourtant, il y avait bien une limite prévue par:
If Sheets(i).Name <> "Global" Then
mais j'ai l'impression que la macro recopie les lignes de tous les
onglets,

puis qu'elle prend aussi les lignes de l'onglet "global"

merci encore,

Marc D

"Daniel" a écrit dans le message de
news:%
Bizarre. Je n'ai pas ce problème. est-ce qu'un gourou peut se pencher
sur


le
problème ?
Pour le nombre de colonnes :
remplace :
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
par :
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).copy _
Sheets("Global").Cells(Ctr, 1)
Cordialement.
Daniel

"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c43e6$0$16401$
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3),
j'ai



ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie bien
la



ligne de titres + les lignes de données des 3 onglets (il y en avait
28



au
total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28
lignes


qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant d'aller
jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de
colonnes



?

Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes.
Modifie-le



suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
de




news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D

















Avatar
Daniel
Mon code fonctionne tel quel. Es-tu sûr que ta feuille s'appelle "Global" et
non pas "global", car le test est sensible à la casse.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c7390$0$16654$
pour le nb de colonnes, la modif marche très bien, merci

pour le pb signalé auparavant (lignes des onglets copiées une deuxième
fois,
j'ai modifié la macro
For i = 1 To Sheets.Count
en :
For i = 1 To Sheets.Count - 1
et là ça marche,
pourtant, il y avait bien une limite prévue par:
If Sheets(i).Name <> "Global" Then
mais j'ai l'impression que la macro recopie les lignes de tous les
onglets,
puis qu'elle prend aussi les lignes de l'onglet "global"

merci encore,

Marc D

"Daniel" a écrit dans le message de
news:%
Bizarre. Je n'ai pas ce problème. est-ce qu'un gourou peut se pencher sur
le

problème ?
Pour le nombre de colonnes :
remplace :
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
par :
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).copy _
Sheets("Global").Cells(Ctr, 1)
Cordialement.
Daniel

"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c43e6$0$16401$
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3), j'ai
ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie bien
la
ligne de titres + les lignes de données des 3 onglets (il y en avait 28
au


total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28
lignes


qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant d'aller
jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de
colonnes
?



Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes.
Modifie-le



suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D

















Avatar
Marc D
C'est juste, j'avais appelé l'onglet "global" au lieu de "Global".
Maintenant, ça marche très bien...
Merci beaucoup.

Une question supplémentaire: en fait, les onglets que je veux compiler sont
des listes de longueur variable parce qu'elles sont documentées par
plusieurs personnes différentes, qui enregistrent des évènements chacune
dans son domaine.
J'envisageais de partager le fichier sur un réseau (outil/partager), mais je
réalise que dans un fichier partagé, les macros ne sont pas actives.

Donc je pense qu'il faut séparer la saisie des données (sur un fichier
partagé, avec plusieurs onglets personne par personne), et le fichier de
synthèse, avec sa macro de compil. Comment demander à la macro de chercher
ses valeurs dans les onglets d'un autre fichier ?

Merci encore de ton aide.

Marc D

"Daniel" a écrit dans le message de
news:%23DJ4b%
Mon code fonctionne tel quel. Es-tu sûr que ta feuille s'appelle "Global"
et

non pas "global", car le test est sensible à la casse.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c7390$0$16654$
pour le nb de colonnes, la modif marche très bien, merci

pour le pb signalé auparavant (lignes des onglets copiées une deuxième
fois,
j'ai modifié la macro
For i = 1 To Sheets.Count
en :
For i = 1 To Sheets.Count - 1
et là ça marche,
pourtant, il y avait bien une limite prévue par:
If Sheets(i).Name <> "Global" Then
mais j'ai l'impression que la macro recopie les lignes de tous les
onglets,
puis qu'elle prend aussi les lignes de l'onglet "global"

merci encore,

Marc D

"Daniel" a écrit dans le message de
news:%
Bizarre. Je n'ai pas ce problème. est-ce qu'un gourou peut se pencher
sur



le
problème ?
Pour le nombre de colonnes :
remplace :
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
par :
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).copy _
Sheets("Global").Cells(Ctr, 1)
Cordialement.
Daniel

"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c43e6$0$16401$
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3),
j'ai




ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie bien
la
ligne de titres + les lignes de données des 3 onglets (il y en avait
28




au
total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28
lignes


qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant d'aller
jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de
colonnes
?



Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes.
Modifie-le



suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D





















Avatar
Daniel
Bonjour.
Cette macro doit faire l'affaire :

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

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432e5620$0$24730$
C'est juste, j'avais appelé l'onglet "global" au lieu de "Global".
Maintenant, ça marche très bien...
Merci beaucoup.

Une question supplémentaire: en fait, les onglets que je veux compiler
sont
des listes de longueur variable parce qu'elles sont documentées par
plusieurs personnes différentes, qui enregistrent des évènements chacune
dans son domaine.
J'envisageais de partager le fichier sur un réseau (outil/partager), mais
je
réalise que dans un fichier partagé, les macros ne sont pas actives.

Donc je pense qu'il faut séparer la saisie des données (sur un fichier
partagé, avec plusieurs onglets personne par personne), et le fichier de
synthèse, avec sa macro de compil. Comment demander à la macro de chercher
ses valeurs dans les onglets d'un autre fichier ?

Merci encore de ton aide.

Marc D

"Daniel" a écrit dans le message de
news:%23DJ4b%
Mon code fonctionne tel quel. Es-tu sûr que ta feuille s'appelle "Global"
et

non pas "global", car le test est sensible à la casse.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c7390$0$16654$
pour le nb de colonnes, la modif marche très bien, merci

pour le pb signalé auparavant (lignes des onglets copiées une deuxième
fois,
j'ai modifié la macro
For i = 1 To Sheets.Count
en :
For i = 1 To Sheets.Count - 1
et là ça marche,
pourtant, il y avait bien une limite prévue par:
If Sheets(i).Name <> "Global" Then
mais j'ai l'impression que la macro recopie les lignes de tous les
onglets,
puis qu'elle prend aussi les lignes de l'onglet "global"

merci encore,

Marc D

"Daniel" a écrit dans le message de
news:%
Bizarre. Je n'ai pas ce problème. est-ce qu'un gourou peut se pencher
sur



le
problème ?
Pour le nombre de colonnes :
remplace :
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
par :
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).copy _
Sheets("Global").Cells(Ctr, 1)
Cordialement.
Daniel

"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
de
news: 432c43e6$0$16401$
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3),
j'ai




ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie
bien
la
ligne de titres + les lignes de données des 3 onglets (il y en avait
28




au
total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28
lignes


qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant d'aller
jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de
colonnes
?



Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes.
Modifie-le



suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le
message
de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D
























Avatar
Marc D
Bonjour Daniel,
je reviens après plusieurs jours d'absence, et je suis surpris de constater
qu'un post que j'avais déposé en réponse à ce message n'apparait pas.
J'ai constaté effectivement que j'avais fait une erreur en appelant l'onglet
"global" sans majuscule. Maintenant, ça marche correctement. Merci beaucoup
pour ton aide.

Mais en fait, je constate que le pb est un peu plus compliqué que prévu.

Les listes de longueur variable dans les onglets à compiler sont des listes
mises à jour par des interlocuteurs différents: le fichier doit être déposé
sur un répertoire partagé d'un réseau et partagé entre plusieurs
utilisateurs.

Dans ces conditions, la macro ne peut plus fonctionner. La solution qui me
semble possible est de séparer le fichier en deux. L'un contiendra les
différents onglets de saisie: c'est lui qui sera partagé. L'autre contiendra
la macro de compil, et doit aller chercher ses données dans les onglets du
premier. Celui-là n'a pas besoin d'être partagé.

Comment faire évoluer la macro pour qu'elle aille chercher ses valeurs dans
un autre fichier ?

Cordialement,
Marc D


"Daniel" a écrit dans le message de
news:%23DJ4b%
Mon code fonctionne tel quel. Es-tu sûr que ta feuille s'appelle "Global"
et

non pas "global", car le test est sensible à la casse.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c7390$0$16654$
pour le nb de colonnes, la modif marche très bien, merci

pour le pb signalé auparavant (lignes des onglets copiées une deuxième
fois,
j'ai modifié la macro
For i = 1 To Sheets.Count
en :
For i = 1 To Sheets.Count - 1
et là ça marche,
pourtant, il y avait bien une limite prévue par:
If Sheets(i).Name <> "Global" Then
mais j'ai l'impression que la macro recopie les lignes de tous les
onglets,
puis qu'elle prend aussi les lignes de l'onglet "global"

merci encore,

Marc D

"Daniel" a écrit dans le message de
news:%
Bizarre. Je n'ai pas ce problème. est-ce qu'un gourou peut se pencher
sur



le
problème ?
Pour le nombre de colonnes :
remplace :
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
par :
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).copy _
Sheets("Global").Cells(Ctr, 1)
Cordialement.
Daniel

"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c43e6$0$16401$
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3),
j'ai




ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie bien
la
ligne de titres + les lignes de données des 3 onglets (il y en avait
28




au
total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28
lignes


qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant d'aller
jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de
colonnes
?



Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes.
Modifie-le



suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D





















Avatar
Marc D
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




"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news:433679a8$0$14210$
Bonjour Daniel,
je reviens après plusieurs jours d'absence, et je suis surpris de
constater

qu'un post que j'avais déposé en réponse à ce message n'apparait pas.
J'ai constaté effectivement que j'avais fait une erreur en appelant
l'onglet

"global" sans majuscule. Maintenant, ça marche correctement. Merci
beaucoup

pour ton aide.

Mais en fait, je constate que le pb est un peu plus compliqué que prévu.

Les listes de longueur variable dans les onglets à compiler sont des
listes

mises à jour par des interlocuteurs différents: le fichier doit être
déposé

sur un répertoire partagé d'un réseau et partagé entre plusieurs
utilisateurs.

Dans ces conditions, la macro ne peut plus fonctionner. La solution qui me
semble possible est de séparer le fichier en deux. L'un contiendra les
différents onglets de saisie: c'est lui qui sera partagé. L'autre
contiendra

la macro de compil, et doit aller chercher ses données dans les onglets du
premier. Celui-là n'a pas besoin d'être partagé.

Comment faire évoluer la macro pour qu'elle aille chercher ses valeurs
dans

un autre fichier ?

Cordialement,
Marc D


"Daniel" a écrit dans le message de
news:%23DJ4b%
Mon code fonctionne tel quel. Es-tu sûr que ta feuille s'appelle
"Global"


et
non pas "global", car le test est sensible à la casse.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message de
news: 432c7390$0$16654$
pour le nb de colonnes, la modif marche très bien, merci

pour le pb signalé auparavant (lignes des onglets copiées une deuxième
fois,
j'ai modifié la macro
For i = 1 To Sheets.Count
en :
For i = 1 To Sheets.Count - 1
et là ça marche,
pourtant, il y avait bien une limite prévue par:
If Sheets(i).Name <> "Global" Then
mais j'ai l'impression que la macro recopie les lignes de tous les
onglets,
puis qu'elle prend aussi les lignes de l'onglet "global"

merci encore,

Marc D

"Daniel" a écrit dans le message de
news:%
Bizarre. Je n'ai pas ce problème. est-ce qu'un gourou peut se pencher
sur



le
problème ?
Pour le nombre de colonnes :
remplace :
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
par :
Range("A2").Resize(Range("A65536").End(xlUp).Row - 1, _
Range("IV1").End(xlToLeft).Column).copy _
Sheets("Global").Cells(Ctr, 1)
Cordialement.
Daniel

"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le message
de




news: 432c43e6$0$16401$
Merci Daniel, ça marche... presque
j'ai fait un classeur avec trois onglets (feuil1, feuil2, feuil3),
j'ai




ajouté un onglet "global" vierge

j'ai constaté deux cas:
1/ si l'onglet global est en dernière position, la macro recopie
bien





la
ligne de titres + les lignes de données des 3 onglets (il y en
avait





28
au
total), mais il rajoute une deuxième fois ces mêmes 28 lignes

2/ si l'onglet global est en première position, il ne copie les 28
lignes


qu'une seule fois, mais la ligne de titre est doublée

Autre question: j'ai adapté le nb de colonnes en choisissant
d'aller





jusqu'à
la colonne E
Range("A2", Range("e65536").End(xlUp)).Copy
mais comment faire pour que la macro détecte elle-même le nb de
colonnes
?



Merci de ton aide
Marc D


"Daniel" a écrit dans le message de
news:
Bonsoir.
Le code suivant doit marcher. Je l'ai fait avec deux colonnes.
Modifie-le



suivant tes besoins :

Sub test()
Dim Ctr As Long, i As Integer
Sheets("Feuil1").Rows(1).Copy Sheets("Global").Rows(1)
Ctr = 2
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Global" Then
Sheets(i).Activate
Range("A2", Range("B65536").End(xlUp)).Copy _
Sheets("Global").Cells(Ctr, 1)
Ctr = Ctr + Range("A65536").End(xlUp).Row - 1
End If
Next i
End Sub

Cordialement.
Daniel
"Marc D" <http://cerbermail.com/?GYTiuFqCBb> a écrit dans le
message






de
news: 432b27d4$0$18213$
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
comment m'y prendre ?

Merci de votre aide
Marc D
























1 2 3