XL 2013 Macro pour copier des colonne d'une feuille A dans un classeur sur une feuille B dans un autre classeur .

AlexandrB

XLDnaute Nouveau
Bonjours ,

Je suis a la recherche d'une macro pour mettre dans mon classeur JTO-gamme PVC , feuille : fichier exel ( la ou il y a marquer insert colonne ) qui va chercher les colonne G ( libellé fr) , O(unité de mesure) , P(valeur mini) et Q (valeur maxi) de ma feuille V2 de mon classeur JTO-306355-0 GammeComplette pour les mettre dans mon classeur JTO_gamme PVC , feuille : fichier excel dans les colonnes C(libellé fr) , E(outil de mesure) , F(valeur mini) et G(Valeur maxi) sans avoir a ouvrir le classeur JTO-306355-0 , sachant que les 2 classeur son dans le même dossier .

Voici ma macro , elle se lance mais pas de copie de colonne :

Sub Copier_Colonnes()

Dim Wb, AWb As Workbook, plage As Range
Application.ScreenUpdating = False

On Error GoTo ErrHandler

'Modifier le chemin C:\Users\flo\Desktop\ ainsi que le nom des classeurs et des feuilles

Set AWb = ThisWorkbook 'C'est le Classeur A de saisie

'Ouvre le Classeur B ou Classeur de destination
Set Wb = Workbooks.Open("C:\Users\benoit.alexandre.CORP\Desktop\essai gamme PVC\JTO-Gamme PVC .xlsm")

'Transfert les données saisies du Classeur A dans le Classeur B et enregistre
AWb.Sheets("V2").Range("g2:g" & Range("G150").End(xlUp).Row).Copy _
Wb.Sheets("Fichier excel").Range("C3:C").End(xlUp)(2)

'Ouvre la boîte de dialogue "Enregistrer sous"
Application.Dialogs(xlDialogSaveAs).Show

Application.ScreenUpdating = True
ErrHandler:
End Sub
 

Pièces jointes

  • JTO-306355-0 GammeComplete KC-V2.xlsx
    64.3 KB · Affichages: 7
  • JTO-Gamme PVC .xlsm
    508 KB · Affichages: 4
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Voici une macro qui utilise Adodb (bibliothèque d'accès aux données).

Mieux vaut séparer, même dans les macros, la mise en forme, de la gestion des données.
La macro suivante ne s'intéresse qu'à l'importation des données.
M'est avis que vous devriez apprendre à utiliser les tableaux structurés, tant pour votre source de données que pour votre tableau de destination.

VB:
Sub Copier_Colonnes()
    Dim rs As Object
    Dim ws As Worksheet
    '
    ' Feuille de réception des données
    Set ws = ThisWorkbook.Sheets("Fichier exel")
    '
    ' Nettoyage des données existantes (offset évite l'entête et la première colonne)
    With ws.Range("B2").CurrentRegion.Offset(2, 1)
        If .Rows.Count > 1 And .Columns.Count > 1 Then
           With .Resize(.Rows.Count - 1, .Columns.Count - 1)
            Debug.Print .Address ' pour vérification durant tests
            .ClearContents
            End With
        End If
    End With
    '
    ' Objet connexion
    With CreateObject("Adodb.connection")
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                            ThisWorkbook.Path & "\JTO-306355-0 GammeComplete KC-V2.xlsx" & _
                            ";Extended Properties=""Excel 8.0;HDR=YES"";"
        .CursorLocation = 3
        '
        ' ouverture de la connexion
        .Open
        '
        ' création d'un objet recordset pour recevoir les données
        Set rs = .Execute("SELECT [Libellé (FR)],[Outil de contrôle],[Unité de mesure],[Valeur mini],[Valeur maxi] FROM [V2$];")
        '
        ' copie des données dans la feuille en prochaine cellule libre de la colonne c
        ws.Cells(Rows.Count, 3).End(xlUp)(2).CopyFromRecordset rs
        '
        ' fermer le recordset et libérer la mémoire
        rs.Close: Set rs = Nothing
        '
        ' fermer la connexion (end with libèrera la mémoire occupée par l'objet )
        .Close
    End With
End Sub

Les deux fichiers doivent être dans le même dossier.
 

Pièces jointes

  • JTO-Gamme PVC .xlsm
    510.2 KB · Affichages: 10

AlexandrB

XLDnaute Nouveau
J'aurais préfère une macro asser simple , juste pour copier des colonne d'une feuille sur un classeur , sur une autre feuille d'un autre classeur . Le problème c'est que les gammes on été fait par une personne différente et que je reprend son travail .
 

cp4

XLDnaute Barbatruc
Bonjour @AlexandrB , @Hasco ;)

Pas tester, peut-être comme ci dessous
VB:
'Transfert les données saisies du Classeur A dans le Classeur B et enregistre
AWb.Sheets("V2").Range("g2:g" & AWb.Sheets("V2").Range("G150").End(xlUp).Row).Copy _
Wb.Sheets("Fichier excel").Range("C3:C").End(xlUp)(2)
Bonne journée
 

AlexandrB

XLDnaute Nouveau
Bonjour, @cp4 , je trouve long le code de @Hasco , j'aurai voulu une macro simple comme celle que j'ai fait au début pour copier une colonne d'un classeur A sur une feuille X sur une autre colonne d'un classeur B sur une feuille Y. j'ai copier ton code dans ma macro mais la colonne G ne se copie pas sur mon 2eme classeur en colonne C , la macro se lance mais rien est copier !
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Alors je vais exprimé ce que je sens, ne le prenez pas ou pas personnellement, vous ferez ce que vous voudrez.
J'en ai raz la casquette de me décarcasser pour des demandeurs, incapables :

1 - de faire l'effort de comprendre la moindre ligne de codes qu'ils réclament pourtant à corps et à cris
2 - de poser une question sur le code donné
3 - de suivre correctement un tuto sur les bases excel et vba

Ceux qui prennent xld pour une société de services à laquelle il suffit de demander pour avoir, sans rien donner, surtout pas d'eux-memes. Je refuse que le forum set transforme en distributeur de macros.

Les mêmes qui savent très bien rejeter en block ce qu'ils ne comprennent pas.
On compte sur leur intelligence pour qu'ils nous posent des questions, mais on a tort.

Alors à ceux-là je dis allez......

J'étais prêt à vous l'expliquer, en long en large et en travers, cette macro, pourquoi ce choix :

votre demande à dit:
.... sans avoir a ouvrir le classeur JTO-306355-0

Avec excel 2013 pour importer des données 'sans avoir à ouvrir le classeur', Adodb était une bonne idée.

Elle paraît longue car j'y ai mis beaucoup de commentaires et de lignes vides pour aérer et que ce soit plus digeste pour vous.
J'aurais pu l'écrire en quelques lignes auxquelles vous n'auriez rien compris.

VBA, si vous ne voulez pas l'apprendre, n'est pas une absolue nécessité.
Apprenez d'abord à travailler avec les méthodes et fonctionnalités traditionnelles d'excel.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 425
Membres
102 886
dernier inscrit
eurlece