Copier /coller tableau de taille variable

Résolu
Bonsoir
j'ai "piqué" ce code sur le net , je l'ai adapté comme tel : il permet de copier le tableau de la feuille A puis de le coller sur la feuille B à la suite du collage précédent. Seulement le collage se fait sur la derniére ligne vide .
Je voudrais le modifier pour un collage sur la derniére colonne vide.
Sub Coller_tab()
Application.ScreenUpdating = False
Dim E
Dim WsS As Worksheet, WsC As Worksheet
Dim i As Integer
Dim LigneAjout As Long
Dim colAjout As Long

E = Array("A")
Set WsC = Worksheets("B")
For i = 0 To UBound(E)
Set WsS = Worksheets(E(i))
LigneAjout = Application.Max(0, WsC.Range("A" & Rows.Count).End(xlUp).Row + 1)
Dim DernCol As Integer
DernCol = WsC.Range("A4").End(xlToRight).Column
MsgBox WsC.Range("A" & Rows.Count).End(xlUp).Row + 1
MsgBox WsC.Range("A1").End(xlToRight).Column
WsS.Range("$B$5:$K$18").Copy
With WsC.Range("A" & LigneAjout)
.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
End With
Next i
Set WsC = Nothing: Set WsS = Nothing

Worksheets("B").Range("A1").Select
Application.ScreenUpdating = True
End Sub


Merci d'avance de votre aide

7 réponses

  1. Bonjour
    La copie se fait à partir de la ligne de la première cellule vide colonne À.
    Et vous, vous voulez quoi?? Parceque la dernière colonne vide ça va pas le faire!!
    1. Oup'ss!!!désolée pour mes explications de "fin de journée"
      en fait la copie se fera à partir de la derniére cellule vide de la ligne A
      Merci de votre aide f894009
      1. Bonjour,

        Maintenant,
        Copier /coller tableau de taille variable
        Vous avez une plage fixe:
         WsS.Range("$B$5:$K$18").Copy
        !!!!!
        Si vous avez une seule copie pas besoin de e=Array.. et for next
        Alors ?????
    2. Bonjour f894009

      je voudrais effectuer effectivement plusieurs copies .
      En fait le code fait exactement ce que je voudrais juste qu'il me faudrait:

      Copier à partir de la COLONNE de la première cellule vide LIGNE A.

      au lieu de

      copier à partir de la ligne de la première cellule vide colonne A.
      Merci de votre aide
      1. Re,

        Copier à partir de la COLONNE de la première cellule vide LIGNE A.
        Ca faut l'expliquer car pas sur que ca existe
    3. Re.

      Mieux vaut un fichier que de se perdre en explications.
      En fait je voudrait un résultat comme sur la feuille1 . ( tableau collé sur les colonnes)

      https://www.cjoint.com/c/FKzhH6caT0A
      merci
      1. Re,
        Ok, mais tableau B incomplet, normale ou pas ?
        Ou B c'est actuellement
        Mais la question plage variable reste d'actualite

        Suite:

        Fichier modifie pour copie plage fixe
        https://www.cjoint.com/c/FKzh6LSWTJf
      2. "mais tableau B incomplet, normale ou pas ?"
        -en clickant sur le bouton on peut rajouter autant de tableaux que l'on souhaite à la suite.
        c'est la philosophie meme du code. Il faut que ça reste.

        "Mais la question plage variable reste d'actualite"
        -oui dans l'exemple, la plage du tableau est fixe
        WsS.Range("$B$5:$K$18").Copy

        mais dans mon projet elle est variable.
      3. @julia NamorRe,
        j'ai mis votre fichier copie plage fixe. Je dois m'absenter pour le moment. Si a mon retour, personne n'a pris la suite, je vous ferai la copie variable
    4. Re,
      Z'etes toujours a l'ecoute ???

      la plage a copier commence toujours en B5 ??
      cette plage est variable en ligne et colonne ??
      1. Oui oui!!!!!.... de retour
        Finalement en revoyant mon projet , la plage à copier sera fixe. Du coup le probléme de la variabilité ne se pose plus.
        Mais par contre certaines cellules du tableau à copier sont vides notamment sur la ligne A et cela améne un probléme à ce niveau
        DernCol = WsC.Range("A4").End(xlToRight).Column + 1
        du fait que l'instruction cherche la premiére cellulke vide.
        Comment contourner ce probléme?
        1. Re,
          derniere ligne/colonne utilisée de la feuille
          derlig = Cells.Find("*", , , , xlByRows, xlPrevious).Row
          dercol = Cells.Find("*", , , , xlByColumns, xlPrevious).Column


          pour colonne d'une ligne ici 4
          DernCol = Cells(4, Columns.Count).End(xlToLeft).Column
      2. C'est tout bon .
        Reste à adapter tout ceci dans le projet.
        Grand merci f894009