Macro qui copie colle dans une plage de donnée

Résolu/Fermé
Bubus31 Messages postés 53 Date d'inscription samedi 14 décembre 2019 Statut Membre Dernière intervention 12 juillet 2023 - 22 juil. 2020 à 16:31
Bubus31 Messages postés 53 Date d'inscription samedi 14 décembre 2019 Statut Membre Dernière intervention 12 juillet 2023 - 23 juil. 2020 à 17:38
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
A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
23 juil. 2020 à 08:28
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

1
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
22 juil. 2020 à 16:37
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"...
0
Bubus31 Messages postés 53 Date d'inscription samedi 14 décembre 2019 Statut Membre Dernière intervention 12 juillet 2023
22 juil. 2020 à 16:55
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.
0
Bubus31 Messages postés 53 Date d'inscription samedi 14 décembre 2019 Statut Membre Dernière intervention 12 juillet 2023
22 juil. 2020 à 17:02
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bubus31 Messages postés 53 Date d'inscription samedi 14 décembre 2019 Statut Membre Dernière intervention 12 juillet 2023
23 juil. 2020 à 17:38
Salut ! c'est parfait j'ai juste eu à faire un ajustement, ca marche nikel ! merci beaucoup.

Bubus31
0