Copier et coller à la suite
Robski
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je recherche à programmer une marcro sous excel avec deux boucles , une pour la designation du Range de la copie et l autre pour la designation du Range du collage.
Je m'explique:
J'ai deux Tableaux agencés de maniere differente.
Un (tableau1) est pour la présentation ,plus pratique, et l'autre (tableau2) sera plus long mais utilisé pour la programmation (filtre , recherche).
Je souhaite copier les données du tableau1 vers le tableau2.
Dans le tableau1 les données sont des Ranges selectionnés toutes les 3 lignes.
J effectue une transposition.
Je colle ces données transposées dans le tableau2 en selectionnant une case qui s íncremente à chaque fois de 54.
J aimerai que les champs se copie l un apres l autre en respectant l ordre suivant:
Copie tableau 1 -> transposition ->collage tableau2 -> Copie lignes +3 tableau1 -> transposition ->collage lignes +54 tableau2 ....
J'ai utilisé pour cela deux indices (i pour tableau1; j pour tableau2)mais je n arrive pas à imposer l ordre voullu à la prochaine incrementation.
Je vous met mon code en aide si cela peut vous aider à comprendre le probleme:
Dim i As Integer
Dim j As Integer
For i = 7 To 283 Step 3
Sheets("Beschaffungstapete_Übersicht").Select
Range(Cells(i, 4), Cells(i + 2, 57)).Select
Selection.Copy
'For j = 3 To 4971 Step 54
Sheets("Tabelle1").Select
Cells(3, 7).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next i
'Next j
Un Grand merci à qui pourra m aider.
Car je suis dans une galere et j'ai déja pas mal ramè.
Je recherche à programmer une marcro sous excel avec deux boucles , une pour la designation du Range de la copie et l autre pour la designation du Range du collage.
Je m'explique:
J'ai deux Tableaux agencés de maniere differente.
Un (tableau1) est pour la présentation ,plus pratique, et l'autre (tableau2) sera plus long mais utilisé pour la programmation (filtre , recherche).
Je souhaite copier les données du tableau1 vers le tableau2.
Dans le tableau1 les données sont des Ranges selectionnés toutes les 3 lignes.
J effectue une transposition.
Je colle ces données transposées dans le tableau2 en selectionnant une case qui s íncremente à chaque fois de 54.
J aimerai que les champs se copie l un apres l autre en respectant l ordre suivant:
Copie tableau 1 -> transposition ->collage tableau2 -> Copie lignes +3 tableau1 -> transposition ->collage lignes +54 tableau2 ....
J'ai utilisé pour cela deux indices (i pour tableau1; j pour tableau2)mais je n arrive pas à imposer l ordre voullu à la prochaine incrementation.
Je vous met mon code en aide si cela peut vous aider à comprendre le probleme:
Dim i As Integer
Dim j As Integer
For i = 7 To 283 Step 3
Sheets("Beschaffungstapete_Übersicht").Select
Range(Cells(i, 4), Cells(i + 2, 57)).Select
Selection.Copy
'For j = 3 To 4971 Step 54
Sheets("Tabelle1").Select
Cells(3, 7).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next i
'Next j
Un Grand merci à qui pourra m aider.
Car je suis dans une galere et j'ai déja pas mal ramè.
A voir également:
- Copier et coller à la suite
- Historique copier coller - Guide
- Style d'écriture a copier coller - Guide
- Copier coller pdf - Guide
- Historique copier coller windows - Accueil - Informatique
- Copier coller multiple - Guide
1 réponse
Bonjour
tites questions;
1/Tu tiens à exporter les formats dans ton tableau 2 (xlPasteAllExceptBorders) ou simplement les valeurs (tableau pour la programmation) ?
2/ a quoi sert J car tu utilises pas dans la boucle : je suppose qu'il s'agit des lignes mais...?
3/ tu parles de transposition; on aura donc un tableau de 51 lignes; c'est ça ?
4/ environ combien de lignes as tu dans le tableau 1 ?
mets un extrait de ton tableau 1 sur une 20taine de lignes sans données confidentielles sur
http://cijoint.fr/
et colle le lien proposer dans ton message
:-x
tites questions;
1/Tu tiens à exporter les formats dans ton tableau 2 (xlPasteAllExceptBorders) ou simplement les valeurs (tableau pour la programmation) ?
2/ a quoi sert J car tu utilises pas dans la boucle : je suppose qu'il s'agit des lignes mais...?
3/ tu parles de transposition; on aura donc un tableau de 51 lignes; c'est ça ?
4/ environ combien de lignes as tu dans le tableau 1 ?
mets un extrait de ton tableau 1 sur une 20taine de lignes sans données confidentielles sur
http://cijoint.fr/
et colle le lien proposer dans ton message
:-x
Tout d'abord merci pour votre réponse rapide.
Je vais essayer répondre clairement à vos questions:
1- Je tiens à conserver la couleur des cellules sans les encadrés.et pas seulement la valeur.
2- Effectivement j n'est pas utilisé. je l ai cependant laisser car j avais pensé programmer avec deux boucles differentes i et j.
Cependant le programme bloque quand je met le next i avant le next j.
Et le cas ou next j se situe avant next j ne m e donne pas ce que je veux.
3-faux.
le tableau ci joint peut aider à comprendre.
dans mon tableau 1 j ai des sous groupes qui sont par groupe toute les 3 lignes.
C 'est ces sous groupes que je veut copier transposer et coller dans le tableau 2.
et cela doit s 'enchainer à'la suite l un de l autre.
dans mon tableau 2 chaque sous groupe est transposé toutes les 54 lignes.
4- j ai 285 lignes - les 6 premieres lignes de presentation , titre....
ci joint mon un cour exemple de mon tableau.
j ai remplacer les mots confidentiels par des chiffres.
Chaque sous -groupe est classer et reclasser selon 3 lignes (tableau 1) ou cologne (tableau2) :
Lieferant (fournisseur)
Standort(lieu)
Land(Pays)
merci d avance pour la reflexion.
ps: ci joint le lien:
http://www.cijoint.fr/cjlink.php?file=cj201006/cijlZXjkHh.xlsx
D'ici la si quelqu'un a une solution...
Sub essai0() Dim i As Integer Dim J As Integer Application.ScreenUpdating = False J = 3 For i = 7 To 283 Step 3 Sheets("Beschaffungstapete_Übersicht").Select Range(Cells(i, 4), Cells(i + 2, 57)).Select Selection.Copy Sheets("Tabelle3").Select Cells(J, 7).Select Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True J = J + 54 Next i End Subje recherche plutot l efficacité du code et cela marche parfaitement.
Donc grand Merci, Michel.
Juste pour comprendre :
J est alors juste une variable mqis qui nést pas utilisé dans un boucle (For To ...).
C'est une sorte de boucle cammouflée?
En tout Cas merci encore..
A+
C'est une sorte de boucle cammouflée?
si tu veux
mais si tu veux frimer hi-tech: c'est une variable d'incrémentation en cascade
mais si
;-)