Copier et coller à la suite

Robski -  
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è.

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    0
    1. Robski
       
      Bonjour,

      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
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Ok, je repasserai en fin de pm ou demain am

      D'ici la si quelqu'un a une solution...
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      en attendant; pas terrible mais ca a l'air de marcher

      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 Sub
      0
    4. Robski
       
      Bonjour,

      je 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+
      0
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,
      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
      ;-)
      0