Macro qui copie colle dans une plage de donnée [Résolu]

Signaler
Messages postés
15
Date d'inscription
samedi 14 décembre 2019
Statut
Membre
Dernière intervention
1 septembre 2020
-
Messages postés
15
Date d'inscription
samedi 14 décembre 2019
Statut
Membre
Dernière intervention
1 septembre 2020
-
Bonjour à tous,

j'ai une macro dans mon classeur 1 qui quand je la lance fait un lien avec SAP, extraie un fichier Excel de SAP, récupère des numéros et les retranscris dans une feuille de mon classeur 1.

Voici le code :

S
et AppExcel = CreateObject("Excel.Application")
Set wbExcel = AppExcel.Workbooks.Open("C:\Users\TO124674\Desktop\Outil delestage\tracking.xls")
AppExcel.Visible = True
AppExcel.Sheets("tracking").Select

rcellule = 2
of = AppExcel.Range("B" & rcellule)
Do While of <> ""
of = AppExcel.Range("B" & rcellule)
Worksheets("Edition").Range("C" & (rcellule + 4)) = of
rcellule = rcellule + 1
Loop


Mon besoin:

je voudrais demander au code d'aller copier jusqu'en cellule C19, puis se mettre en colonne D, copier jusqu'en D19, puis se mettre en E6, copier jusqu'en E19 et enfin se mettre en F6 puis coller jusqu'en F19.

car sinon le code vient ecraser les données du dessous en collant sur la même colonne alors que je voudrais cadrer cela (en effet, il peut y avoir 10 lignes à copier comme 40, c'est pour cela que je veux le cadrer en lui demandant que dès qu'il arrive en C19,D19,E19, le collage se positionne dans la colonne suivante en ligne 6)

Bubus31

5 réponses

Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 497
Bonjour,

C'est plus clair maintenant...
Voici le code. Si tu as des questions, n'hésite pas...
Option Explicit

Sub CopieSapColleExcel()
Dim AppExcel As Excel.Application
Dim wbExcel As Workbook
Dim wsFeuilSource As Worksheet, wsFeuilDest As Worksheet
Dim vDatasTracking
Dim rcellule As Long, Ligne As Long
Dim Colonne As Integer

    'La feuille qui doit accueillir les données dans la plage C6:F19
    Set wsFeuilDest = ThisWorkbook.Sheets("Edition")
    
    Set AppExcel = New Excel.Application 'pas très utile et source d'erreurs, de plantage
    Set wbExcel = AppExcel.Workbooks.Open("C:\Users\TO124674\Desktop\Outil delestage\tracking.xls")
    AppExcel.Visible = True
    
    'La feuille source des données du classeur tracking
    Set wsFeuilSource = wbExcel.Sheets("tracking")
    rcellule = 2
    'La plage des données dans le classeur tracking.xls feuille tracking
    vDatasTracking = wsFeuilSource.Range("B2:B120").Value
    For Colonne = 3 To 6        'boucle sur les colonnes : 3 = C / 6 = F
        For Ligne = 6 To 19     'boucle sur les lignes de 6 à 19
            wsFeuilDest.Cells(Ligne, Colonne).Value = vDatasTracking(rcellule, 1)
            rcellule = rcellule + 1
        Next
    Next
    
    Erase vDatasTracking
    Set wsFeuilDest = Nothing
    Set wsFeuilSource = Nothing
    wbExcel.Close False
    Set wbExcel = Nothing
    AppExcel.Quit
    Set AppExcel = Nothing
End Sub

Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 497
Bonjour,

Demande de précisions :

Tu veux :
> Copier "C6:C19" ==> coller ou?
> Copier "D6:D19" ==> coller ou?
> Copier "E6:E19" ==> coller ou?
> Coller en "F6:F19" ==> coller quoi?

-----------------------------------------------------------------

Les bornes 6 et 19 seront toujours, systématiquement, à chaque fois 6 et 19? ou alors sont-elles susceptibles d'évolutions???
Genre "C6:C94"...
Messages postés
15
Date d'inscription
samedi 14 décembre 2019
Statut
Membre
Dernière intervention
1 septembre 2020

Salut !

En fait, ma macro vient récupérer, donc copier des données dans la feuille que SAP me génere, puis me les colle dans mon classeur 1 de destination en feuille "Edition" à partir de la cellule C6.

Il faut imaginer que les données copiées doivent être retranscrites dans un cadre donc ici C6:F19... ca ne change pas, j'ai prévu que les numéros soient collées de C6 à C19, D6 à D19...

Le besoin, c'est que la macro comprenne qu'il ne faut pas dépasser ma ligne 19 ( en dessous j'ai du texte et la macro me l'écrase car je ne lui ai pas spécifié que lorsque elle atteint l'emplacement C19 par exemple, elle doit continuer de coller en D6 jusqu’à D19... et ainsi dessuite jusqu'a F19.
Messages postés
15
Date d'inscription
samedi 14 décembre 2019
Statut
Membre
Dernière intervention
1 septembre 2020

ps: je me suis trompé dans la formulation de mon besoin, c'est pas copier C6:C19 , D6:D19 etc mais bien de venir coller ce que la macro à récupérée du fichier Excel extrait de SAP.

Bubus31
Messages postés
15
Date d'inscription
samedi 14 décembre 2019
Statut
Membre
Dernière intervention
1 septembre 2020

Salut ! c'est parfait j'ai juste eu à faire un ajustement, ca marche nikel ! merci beaucoup.

Bubus31