OVH Cloud OVH Cloud

Copier plusieurs cellules

9 réponses
Avatar
Ricou
Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous

9 réponses

Avatar
michdenis
Bonjour Ricou,

Observe bien : Cells(1, I).Select

Tu n'a pas inscris comme adresse deux 1 ? Mais un 1 et un i Majuscule !

;-)


Salutations!





"Ricou" a écrit dans le message de news:
Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous
Avatar
michdenis
En complément ...

Si i = 0 au premier passage, aucune cellule n'a cette adresse cells(1,0)


Salutations!



"michdenis" a écrit dans le message de news: %
Bonjour Ricou,

Observe bien : Cells(1, I).Select

Tu n'a pas inscris comme adresse deux 1 ? Mais un 1 et un i Majuscule !

;-)


Salutations!





"Ricou" a écrit dans le message de news:
Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous
Avatar
Youky
Hello,
Je viens de tester et en effet "plantage"
une modif à faire, faut remettre le nom de la feuille .......Bizzard

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Sheets(MM).Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

"Ricou" a écrit dans le message de news:

Voici la situation. Je voudrais copier d'un classeur à un autre des
cellules

J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou
de

ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec
laquelle

vous me répondez. J'ai consulté les différentes questions qui sont
publiées

et je ne suis pas encore en mesure d'apporter ma contribution à e forum
mais

j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous


Avatar
Ricou
Excuse moi michdenis, voici la boucle complète.
Justement, le but est de copier
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting))
de 3 feuilles différentes sur une seule feuille à partir de
ligne1 colonne 13
puis ligne 1 colonne 13+ColumnCounting
puis ligne1 colonne 13+2*ColumnCounting
d'où un Cells(1, I)
;-))
c'est pour cela que je ne vois pas trop pourquoi cela ne fonctionne pas!


I = 13
For Each Sh In Worksheets
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next


Bonjour Ricou,

Observe bien : Cells(1, I).Select

Tu n'a pas inscris comme adresse deux 1 ? Mais un 1 et un i Majuscule !

;-)


Salutations!





"Ricou" a écrit dans le message de news:
Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous





Avatar
michdenis
Bonjour Ricou,

Si tu veux soumettre une procédure, fais-le mais dans son intégralité.

Prend le soin de définir les variables au besoin .

Tel que présenté, c'est très difficile de deviner la valeur de tes variables RowCounting et ColumnCounting et comment tu les as
définies.

FichDiv et MM sont des variables représentant des noms d'objets ou directement le nom des objets.

Il faut prendre le temps d'énoncer clairement ce que doit faire la macro.


Salutations!




"Ricou" a écrit dans le message de news:
Excuse moi michdenis, voici la boucle complète.
Justement, le but est de copier
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting))
de 3 feuilles différentes sur une seule feuille à partir de
ligne1 colonne 13
puis ligne 1 colonne 13+ColumnCounting
puis ligne1 colonne 13+2*ColumnCounting
d'où un Cells(1, I)
;-))
c'est pour cela que je ne vois pas trop pourquoi cela ne fonctionne pas!


I = 13
For Each Sh In Worksheets
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next


Bonjour Ricou,

Observe bien : Cells(1, I).Select

Tu n'a pas inscris comme adresse deux 1 ? Mais un 1 et un i Majuscule !

;-)


Salutations!





"Ricou" a écrit dans le message de news:
Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous





Avatar
Ricou
Bon cette fois, je vais essayer de ne rien oublier :

Division est une variable entrée par l'utilisateur dans un userform
FichDiv est un ActiveWorkbook.Name définit plus haut
MM = Month(Date)
ColumnCounting = [Prix!A3].CurrentRegion.Columns.Count
RowCounting = [Prix!A3].CurrentRegion.Rows.Count
I = 13
For Each Sh In Worksheets
Sh.Activate
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next

Je crois que j'ai tout mis.
La solution de Youki fonctionne :il suffit de mettre Sheets(MM).Cells(...
En revanche, j'ai un nouveau problème. Mon filtre semble ne pas fonctionner.
Qaund je fais tourner ma macro pas à pas (F8), après Field:=1, etc... la
feuille filtrée n'est pas modifiée, même si je mets un
Application.ScreenUpdating=True avant la boucle. (je suis sur Office XP Pro)
Vous l'aurez compris, le but est de copier des valeurs associées à un
critère, la division entrée par l'utilisateur.

Merci à tous!



Bonjour Ricou,

Si tu veux soumettre une procédure, fais-le mais dans son intégralité.

Prend le soin de définir les variables au besoin .

Tel que présenté, c'est très difficile de deviner la valeur de tes variables RowCounting et ColumnCounting et comment tu les as
définies.

FichDiv et MM sont des variables représentant des noms d'objets ou directement le nom des objets.

Il faut prendre le temps d'énoncer clairement ce que doit faire la macro.


Salutations!




"Ricou" a écrit dans le message de news:
Excuse moi michdenis, voici la boucle complète.
Justement, le but est de copier
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting))
de 3 feuilles différentes sur une seule feuille à partir de
ligne1 colonne 13
puis ligne 1 colonne 13+ColumnCounting
puis ligne1 colonne 13+2*ColumnCounting
d'où un Cells(1, I)
;-))
c'est pour cela que je ne vois pas trop pourquoi cela ne fonctionne pas!


I = 13
For Each Sh In Worksheets
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next


Bonjour Ricou,

Observe bien : Cells(1, I).Select

Tu n'a pas inscris comme adresse deux 1 ? Mais un 1 et un i Majuscule !

;-)


Salutations!





"Ricou" a écrit dans le message de news:
Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous










Avatar
michdenis
As-tu essayer quelque chose comme ceci :


'---------------------------------------
Dim sh As Worksheet
MM = Month(Date)

ColumnCounting = [Prix!A3].CurrentRegion.Columns.Count
RowCounting = [Prix!A3].CurrentRegion.Rows.Count
I = 13
division = 5

For Each sh In Worksheets
With sh
If .AutoFilterMode = True Then
.Rows(3).Cells.AutoFilter
End If
With .Rows(3).Cells
.AutoFilter Field:=1, Criteria1:="=*" & division & "*"
.Cells(1, 13).Resize(RowCounting, ColumnCounting).Copy _
Workbooks(FichDiv).Sheets(MM).Cells(1, I)
I = I + ColumnCounting
.AutoFilter
End With
End With
Next

End Sub
'-----------------------------------------


Salutations!



"Ricou" a écrit dans le message de news:
Bon cette fois, je vais essayer de ne rien oublier :

Division est une variable entrée par l'utilisateur dans un userform
FichDiv est un ActiveWorkbook.Name définit plus haut
MM = Month(Date)
ColumnCounting = [Prix!A3].CurrentRegion.Columns.Count
RowCounting = [Prix!A3].CurrentRegion.Rows.Count
I = 13
For Each Sh In Worksheets
Sh.Activate
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next

Je crois que j'ai tout mis.
La solution de Youki fonctionne :il suffit de mettre Sheets(MM).Cells(...
En revanche, j'ai un nouveau problème. Mon filtre semble ne pas fonctionner.
Qaund je fais tourner ma macro pas à pas (F8), après Field:=1, etc... la
feuille filtrée n'est pas modifiée, même si je mets un
Application.ScreenUpdating=True avant la boucle. (je suis sur Office XP Pro)
Vous l'aurez compris, le but est de copier des valeurs associées à un
critère, la division entrée par l'utilisateur.

Merci à tous!



Bonjour Ricou,

Si tu veux soumettre une procédure, fais-le mais dans son intégralité.

Prend le soin de définir les variables au besoin .

Tel que présenté, c'est très difficile de deviner la valeur de tes variables RowCounting et ColumnCounting et comment tu les as
définies.

FichDiv et MM sont des variables représentant des noms d'objets ou directement le nom des objets.

Il faut prendre le temps d'énoncer clairement ce que doit faire la macro.


Salutations!




"Ricou" a écrit dans le message de news:
Excuse moi michdenis, voici la boucle complète.
Justement, le but est de copier
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting))
de 3 feuilles différentes sur une seule feuille à partir de
ligne1 colonne 13
puis ligne 1 colonne 13+ColumnCounting
puis ligne1 colonne 13+2*ColumnCounting
d'où un Cells(1, I)
;-))
c'est pour cela que je ne vois pas trop pourquoi cela ne fonctionne pas!


I = 13
For Each Sh In Worksheets
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next


Bonjour Ricou,

Observe bien : Cells(1, I).Select

Tu n'a pas inscris comme adresse deux 1 ? Mais un 1 et un i Majuscule !

;-)


Salutations!





"Ricou" a écrit dans le message de news:
Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous










Avatar
Ricou
GENIAL ! merci infiniment ! Ca fonctionne à merveille !
Je ne maîtrise pas du tout les with alors je les utilise assez peu, je crois
que ca allège pas mal les macro quand elles tournent ?
En tout cas merci beaucoup.
Peut être à demain...

ciao


As-tu essayer quelque chose comme ceci :


'---------------------------------------
Dim sh As Worksheet
MM = Month(Date)

ColumnCounting = [Prix!A3].CurrentRegion.Columns.Count
RowCounting = [Prix!A3].CurrentRegion.Rows.Count
I = 13
division = 5

For Each sh In Worksheets
With sh
If .AutoFilterMode = True Then
.Rows(3).Cells.AutoFilter
End If
With .Rows(3).Cells
.AutoFilter Field:=1, Criteria1:="=*" & division & "*"
.Cells(1, 13).Resize(RowCounting, ColumnCounting).Copy _
Workbooks(FichDiv).Sheets(MM).Cells(1, I)
I = I + ColumnCounting
.AutoFilter
End With
End With
Next

End Sub
'-----------------------------------------


Salutations!



"Ricou" a écrit dans le message de news:
Bon cette fois, je vais essayer de ne rien oublier :

Division est une variable entrée par l'utilisateur dans un userform
FichDiv est un ActiveWorkbook.Name définit plus haut
MM = Month(Date)
ColumnCounting = [Prix!A3].CurrentRegion.Columns.Count
RowCounting = [Prix!A3].CurrentRegion.Rows.Count
I = 13
For Each Sh In Worksheets
Sh.Activate
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next

Je crois que j'ai tout mis.
La solution de Youki fonctionne :il suffit de mettre Sheets(MM).Cells(...
En revanche, j'ai un nouveau problème. Mon filtre semble ne pas fonctionner.
Qaund je fais tourner ma macro pas à pas (F8), après Field:=1, etc... la
feuille filtrée n'est pas modifiée, même si je mets un
Application.ScreenUpdating=True avant la boucle. (je suis sur Office XP Pro)
Vous l'aurez compris, le but est de copier des valeurs associées à un
critère, la division entrée par l'utilisateur.

Merci à tous!



Bonjour Ricou,

Si tu veux soumettre une procédure, fais-le mais dans son intégralité.

Prend le soin de définir les variables au besoin .

Tel que présenté, c'est très difficile de deviner la valeur de tes variables RowCounting et ColumnCounting et comment tu les as
définies.

FichDiv et MM sont des variables représentant des noms d'objets ou directement le nom des objets.

Il faut prendre le temps d'énoncer clairement ce que doit faire la macro.


Salutations!




"Ricou" a écrit dans le message de news:
Excuse moi michdenis, voici la boucle complète.
Justement, le but est de copier
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting))
de 3 feuilles différentes sur une seule feuille à partir de
ligne1 colonne 13
puis ligne 1 colonne 13+ColumnCounting
puis ligne1 colonne 13+2*ColumnCounting
d'où un Cells(1, I)
;-))
c'est pour cela que je ne vois pas trop pourquoi cela ne fonctionne pas!


I = 13
For Each Sh In Worksheets
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next


Bonjour Ricou,

Observe bien : Cells(1, I).Select

Tu n'a pas inscris comme adresse deux 1 ? Mais un 1 et un i Majuscule !

;-)


Salutations!





"Ricou" a écrit dans le message de news:
Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous















Avatar
michdenis
Bonjour Ricou,

| Je ne maîtrise pas du tout les with alors je les utilise assez peu

C'est dommage car cette méthode représente plusieurs grands avantages :

- L'usage de cette méthode ne nécessite pas la "Sélection" des objets pour les traiter.
- L'exécution du code est beaucoup plus rapide
- L'écriture et la lecture du code par le développeur est plus facile (plus concis)
- Le code peut être copié et placé dans un module standard ou un module de feuille sans nécessité d'en modifier la syntaxe, le cas
échéant.


Salutations!


"Ricou" a écrit dans le message de news:
GENIAL ! merci infiniment ! Ca fonctionne à merveille !
Je ne maîtrise pas du tout les with alors je les utilise assez peu, je crois
que ca allège pas mal les macro quand elles tournent ?
En tout cas merci beaucoup.
Peut être à demain...

ciao


As-tu essayer quelque chose comme ceci :


'---------------------------------------
Dim sh As Worksheet
MM = Month(Date)

ColumnCounting = [Prix!A3].CurrentRegion.Columns.Count
RowCounting = [Prix!A3].CurrentRegion.Rows.Count
I = 13
division = 5

For Each sh In Worksheets
With sh
If .AutoFilterMode = True Then
.Rows(3).Cells.AutoFilter
End If
With .Rows(3).Cells
.AutoFilter Field:=1, Criteria1:="=*" & division & "*"
.Cells(1, 13).Resize(RowCounting, ColumnCounting).Copy _
Workbooks(FichDiv).Sheets(MM).Cells(1, I)
I = I + ColumnCounting
.AutoFilter
End With
End With
Next

End Sub
'-----------------------------------------


Salutations!



"Ricou" a écrit dans le message de news:
Bon cette fois, je vais essayer de ne rien oublier :

Division est une variable entrée par l'utilisateur dans un userform
FichDiv est un ActiveWorkbook.Name définit plus haut
MM = Month(Date)
ColumnCounting = [Prix!A3].CurrentRegion.Columns.Count
RowCounting = [Prix!A3].CurrentRegion.Rows.Count
I = 13
For Each Sh In Worksheets
Sh.Activate
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next

Je crois que j'ai tout mis.
La solution de Youki fonctionne :il suffit de mettre Sheets(MM).Cells(...
En revanche, j'ai un nouveau problème. Mon filtre semble ne pas fonctionner.
Qaund je fais tourner ma macro pas à pas (F8), après Field:=1, etc... la
feuille filtrée n'est pas modifiée, même si je mets un
Application.ScreenUpdating=True avant la boucle. (je suis sur Office XP Pro)
Vous l'aurez compris, le but est de copier des valeurs associées à un
critère, la division entrée par l'utilisateur.

Merci à tous!



Bonjour Ricou,

Si tu veux soumettre une procédure, fais-le mais dans son intégralité.

Prend le soin de définir les variables au besoin .

Tel que présenté, c'est très difficile de deviner la valeur de tes variables RowCounting et ColumnCounting et comment tu les as
définies.

FichDiv et MM sont des variables représentant des noms d'objets ou directement le nom des objets.

Il faut prendre le temps d'énoncer clairement ce que doit faire la macro.


Salutations!




"Ricou" a écrit dans le message de news:
Excuse moi michdenis, voici la boucle complète.
Justement, le but est de copier
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting))
de 3 feuilles différentes sur une seule feuille à partir de
ligne1 colonne 13
puis ligne 1 colonne 13+ColumnCounting
puis ligne1 colonne 13+2*ColumnCounting
d'où un Cells(1, I)
;-))
c'est pour cela que je ne vois pas trop pourquoi cela ne fonctionne pas!


I = 13
For Each Sh In Worksheets
Rows("3:3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & division & "*",
Operator:=xlAnd
Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting
Next


Bonjour Ricou,

Observe bien : Cells(1, I).Select

Tu n'a pas inscris comme adresse deux 1 ? Mais un 1 et un i Majuscule !

;-)


Salutations!





"Ricou" a écrit dans le message de news:

Voici la situation. Je voudrais copier d'un classeur à un autre des cellules
J'ai ainsi créé le code suivant.
RowCounting a compté le nombre de lignes
ColumnCounting, le nombre de colonnes
I me permet de copier à la suite, sur une seule feuille, les cellules de
trois feuilles différentes de même taille.

Range(Cells(1, 13), Cells(RowCounting, ColumnCounting)).Copy
Workbooks(FichDiv).Activate
Sheets(MM).Select
Cells(1, I).Select
ActiveSheet.Paste
I = I + ColumnCounting

Mon souci :un message d'erreur apparaît au niveau de Cells(1, I).Select
ou de
ActiveSheet.Paste.
et ce qu'elles que soient les modifications que j'y apporte (Range, range
(Cells(1, I))
Merci d'avance de m'éclairer.

PS: je tiens à vous remercier pour la rapidité et l'efficacité avec laquelle
vous me répondez. J'ai consulté les différentes questions qui sont publiées
et je ne suis pas encore en mesure d'apporter ma contribution à e forum mais
j'espère pouvoir le faire à terme. Je vous sollicite beaucoup mais je n'ai
pas trouvé d'autre forum aussi complet, sérieux et efficace que celui-ci.
Merci à tous