OVH Cloud OVH Cloud

Problème de boucles - VBA

26 réponses
Avatar
Patrick BASTARD
Bonjour à tous.

Grand merci à qui voudra bien m'aider à modifier ce code pour qu'il copie
chacune des 17 zones (A2:D10, A13:D21, ...) d'un nombre de feuilles entre 28
et 31 (suivant les mois) sur la feuille "TOTAL", de manière à ce que les
premières (A2:D10) soient les unes sous les autres à partir de la cellule
A2, les deuxièmes les unes sous les autres à partir de la cellule F2, etc...
Un titre est déja inscrit dans les cellules de la ligne 1.

J'ai pensé à une boucle pour décaler chaque zone à copier (en la définissant
avec offset? ) mais ça dépasse mes connaissances actuelles.

Question subsidiaire :
Dans un cas comme celui-ci, est-il plus judicieux de traiter chaque zone de
la première feuille, puis de la suivante, ou bien la première zone de chaque
feuille, puis la zone suivante?

Bien cordialement,

Patrick.

Sub Recopie()

For f = 1 To 8
'modifier pour compter le nb réel de feuilles dans le classeur(-1 pour
"TOTAL")

ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index + f).Select
Range("A2:D10").Copy
Sheets("TOTAL").Select
Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
'ici, la sélection se fait sur "TOTAL", et non sur la bonne feuille
Range("A13:D21").Copy
Sheets("TOTAL").Select
Range("f65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues

Next f

Range("A1:I1").Select
Selection.AutoFilter
End Sub

10 réponses

1 2 3
Avatar
Michel Gaboly
;-))

Manquaient juste quelques lignes, la citation et la signature

Sur le fond, es-tu d'accord ?

Bonjour Michel,
Vu d'ici ça semblait complet.
Même ton message a été optimisé ? ;o)))




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Patrick BASTARD
Bonjour, *Michel*

J'ai encore, grâce à ton intervention, appris plein de choses.

Bien évidemment que ça marche !!!

Seule question en suspens : Comment commencer la recopie en ligne 2 sur
Total, et non pas en ligne 11 ?

On me crie "A table", alors j'y vais, je reviens et je te dis si je trouve
seul.

Bien cordialement,

Patrick.

;-))

Manquaient juste quelques lignes, la citation et la signature

Sur le fond, es-tu d'accord ?

Bonjour Michel,
Vu d'ici ça semblait complet.
Même ton message a été optimisé ? ;o)))




Avatar
Pounet95
Re,
Bien sûr !
Pour moi, il n'y a pas une solution mais plusieurs. Je me contente
de donner une piste en précisant souvent 'à adapter'. Je n'ai aucun grief
contre qui que
ce soit qui propose une version améliorée de ce que j'ai pu proposer.
Au final, c'est au demandeur et à ceux qui liront de faire leur choix.
De toute façon, on apprend toujours des autres.
Bien cordialement

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Michel Gaboly" a écrit dans le message de news:
uj664Pv%
;-))

Manquaient juste quelques lignes, la citation et la signature

Sur le fond, es-tu d'accord ?

Bonjour Michel,
Vu d'ici ça semblait complet.
Même ton message a été optimisé ? ;o)))




--
Cordialement,

Michel Gaboly
www.gaboly.com



Avatar
Patrick BASTARD
Re,

Range(Cells(TLig - 9, FCol), Cells(TLig + 8, FCol + 3)) = f.Range("A" & FLig
& ":" & "D" & FLig + 8).Value
est correct.

Encore merci, Michel,

et à bientôt.


"A TABLE !!!"
Oui, j'arrive...
;-)
Avatar
FxM
Bonjour Michel,

N'utilises-tu pas un raccourci clavier compris par TB pour autre chose
que ce que tu souhaites ? (en l'occurence ctrl-enter)

La liste des raccourcis (à vérifier s'ils conviennent pour Mac) :
http://texturizer.net/mozilla/fr/thunderbird/keyboard-fr.html

@+
FxM


Bonjour Misange,

Effectivement, ;-((

Bonne année.

Rien fait de particulier. Ce qui est surprenant, c'est que quand un
messgae est tronqué, il ne semble pas y avoir de constante (nb de lignes
par exemple).

J'utilisais avant Nescape Communicator 4.5, une antiquité, l'ancêtre de
Thunderbird. Jamais eu ce problème.


Nouvelle tentative de poster la fin.

Par ailleurs, pour parcourir une collection , il y a la boucle "For ...
Each" qui est extrêmement pratique, qui le + souvent, remplace
avantageusement "For i = ... to Collection.Count".

NB - C'est moins vrai ici, dans la mesure où on a besoin d'un compteur
pour incrémenter TLig.

Voilà ;-))



ben c'est pas mieux !
tu es sur qu tu n'as pas ms un truc qui limite la taille des messages
que tu envoies ;-)
j'ai jamais eu ce pb avec thunderbird sur PC... Ah les macs (vieux
débat !)

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 15/01/2005 11:57, :

Cela recommence ;-(( Message encore tronqué ; en voici la fin :









Avatar
Michel Gaboly
Bon appétit ;-))

Re,

Range(Cells(TLig - 9, FCol), Cells(TLig + 8, FCol + 3)) = f.Range("A" & FLig
& ":" & "D" & FLig + 8).Value
est correct.

Encore merci, Michel,

et à bientôt.


"A TABLE !!!"
Oui, j'arrive...
;-)





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Michel Gaboly
Merci de l'info ; je vais regarder.

Bonne année.

Bonjour Michel,

N'utilises-tu pas un raccourci clavier compris par TB pour autre chose
que ce que tu souhaites ? (en l'occurence ctrl-enter)

La liste des raccourcis (à vérifier s'ils conviennent pour Mac) :
http://texturizer.net/mozilla/fr/thunderbird/keyboard-fr.html

@+
FxM



Bonjour Misange,

Effectivement, ;-((

Bonne année.

Rien fait de particulier. Ce qui est surprenant, c'est que quand un
messgae est tronqué, il ne semble pas y avoir de constante (nb de
lignes par exemple).

J'utilisais avant Nescape Communicator 4.5, une antiquité, l'ancêtre
de Thunderbird. Jamais eu ce problème.


Nouvelle tentative de poster la fin.

Par ailleurs, pour parcourir une collection , il y a la boucle "For
... Each" qui est extrêmement pratique, qui le + souvent, remplace
avantageusement "For i = ... to Collection.Count".

NB - C'est moins vrai ici, dans la mesure où on a besoin d'un compteur
pour incrémenter TLig.

Voilà ;-))



ben c'est pas mieux !
tu es sur qu tu n'as pas ms un truc qui limite la taille des messages
que tu envoies ;-)
j'ai jamais eu ce pb avec thunderbird sur PC... Ah les macs (vieux
débat !)

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 15/01/2005 11:57, :

Cela recommence ;-(( Message encore tronqué ; en voici la fin :










--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Patrick BASTARD
Re, Michel.


For Each f In ThisWorkbook.Sheets

me génère 9 lignes de #N/A sur la feuille TOTAL.

Je subodore que cela vient du fait que ma feuille Total, ne doit pas être
balayée,

Comment puis-je corriger ?

VBA digère mal : For Each f In ThisWorkbook.Sheets -1

Bien cordialement,

Patrick.
Avatar
Michel Gaboly
Re,

For Each f In ThisWorkbook.Sheets
If f.Name <> "TOTAL" Then
...
End If
Next f

NB - dans "If f.Name <> "TOTAL"", la comparaison est sensible à la casse
(minuscule/majuscule), donx à adapter éventuellement :

If f.Name <> "Total" par exemple

Doit correspondre précisément au nom de l'onglet.

Envoie-moi ton classeur si tu veux en enlevant "ASupp"

A +

Re, Michel.


For Each f In ThisWorkbook.Sheets

me génère 9 lignes de #N/A sur la feuille TOTAL.

Je subodore que cela vient du fait que ma feuille Total, ne doit pas être
balayée,

Comment puis-je corriger ?

VBA digère mal : For Each f In ThisWorkbook.Sheets -1

Bien cordialement,

Patrick.








--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
twinley
Bsr Michel,

La malédiction du troncusse castratus te poursuit...

:-$

à+twinley

Re,

For Each f In ThisWorkbook.Sheets
If f.Name <> "TOTAL" Then
...
End If
Next f

NB - dans "If f.Name <> "TOTAL"", la comparaison est sensible à la casse
(minuscule/majuscule), donx à adapter éventuellement :

If f.Name <> "Total" par exemple

Doit correspondre précisément au nom de l'onglet.

Envoie-moi ton classeur si tu veux en enlevant "ASupp"

A +


Re, Michel.


For Each f In ThisWorkbook.Sheets

me génère 9 lignes de #N/A sur la feuille TOTAL.

Je subodore que cela vient du fait que ma feuille Total, ne doit pas
être balayée,

Comment puis-je corriger ?

VBA digère mal : For Each f In ThisWorkbook.Sheets -1

Bien cordialement,

Patrick.











1 2 3