Transfert données plage variable deux excels

Bonjour,
J'étais déjà venu pour un autre problème de selectione de plage de donnée, mais je reviens vers vous, le problème étant bien complexe...
La continuité de cette selection est la copie et le collage de cette plage dans un autre excel. Ma plage fait 9 colonnes et 300 lignes.
Voici mon code :



Je travaille sur des colonnes à 2 lettres voir 3 lettres, et je galère sur la mobilité de la plage (décalage de 9 colonnes) et le changement de lettre au moment où j'arrive au Z (Comment faire si la lettre est au milieu de la plage..?)
Mes connaissances en VBA / Excel ne sont pas assez bonnes pour régler ce problème..
Merci si vous pouviez m'aider, la fin du code n'est pas utile ! Je pense pouvoir régler le problème pour coller dans le fichier.. Merci encore.
Bonne journée,
Ewilem.

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour, merci de partager le texte de ton code, au lieu d'une image.
    je vois que tu fais des contorsions pour obtenir un Range avec des lettres.
    tu peux aussi faire, comme ThauTheme te l'a déjà expliqué ici:
     Range( Cells (i,j) , Cells (k,l) )

    en spécifiant la première et la dernière cellule.
    par ailleurs, il est recommandé d'éviter les select et activate.
    1. Oui mais comment incrémenter les cellules ensuites ? Sachant que j'ai 119 transferts à faire.. Je vais changer et mettre le code à la place ! Edit : Bon apparemment je ne peux pas modifier le post..
    2. Contributeur
      @Ewilemtu peux copier le code comme tu publies tes commentaires.
      avant de copier ton code, modifie le nom des variables pour que ton code soit plus clair, et ajoute des commentaires.
      tu oublies tout ce que tu fais pour obtenir les lettres correspondants aux colonnes: tu travailles exclusivement avec les numéros de colonnes, presque comme tu fais avec les numéros de lignes.
    3. Contributeur
      @Ewilemexemple:
      Option Explicit
      
      Private Sub cp()
      Dim i As Integer
      Dim coldebut As Long, colfin As Long
      Dim source As Worksheet, dest As Worksheet
      Set source = ThisWorkbook.Sheets("?")
      Set dest = Workbooks("DonneesTransfert").Sheets("?")
      coldebut = 100
      colfin = 108
      For i = 1 To 119
          source.Range(source.Cells(2, coldebut), source.Cells(300, colfin)).Copy (dest.[c23])
          coldebut = coldebut + 9
          colfin = colfin + 9
      Next i
      End Sub