Macro avec comportements différents

Bonjour,

Je vous sollicite car je suis embêté avec mes fichiers macrotisés !

J'explique le contexte :

Je travail dans l'administration des ventes et gestion de base de données articles de mon entreprise.

Pour économiser des dizaines d'heures que prend une tache, j'ai créé 12 fichiers qui me permettent de fixer des prix selon divers critères (produit, client, etc).

Vu que les résultats sont différents à chaque fois, et que ça pèse des milliers de lignes, j'ai besoin de pouvoir enregistrer chaque changement, d'où la séparation en douze (m'enfin là n'est pas le problème).

J'explique le fonctionnement:

Dans chaque fichier, j'ai plusieurs onglets qui représentent chacun une marque avec ses articles qui sont donc affectés à un prix. (Ceci fonctionne parfaitement en automatique)

Ensuite chacun de ces onglets sont regroupés en un seul qui est appelé "GLOBAL", une certaine mise en forme est à respectée ici, car cela va être uploadé plus tard en machine. (Cette étape est appelée "Consolidation des donnée" et fonctionne correctement grâce à une macro affectée à un bouton)

Maintenant que tous nos précieux articles sont tarifés, nous voulons les mettre en machine. Nous utilisons donc un fichier reprenant presque la même mise en forme que l'onglet GLOBAL dans lesquels sera copié le contenu du-dit onglet grâce au bouton "Export CSV" rattaché à la macro "CSV".

Image des entêtes du fichier d'upload en pièce-jointe "Capture.PNG", j'ai surligné en jaune les colonnes qui devraient être remplies.

J'explique le problème:

Le problème c'est que sur mes 12 fichiers, 9 fonctionnent correctement, 3 ne fonctionnent pas pour je ne sais quelle raison.

En gros ma macro s'effectue bien, mais lors du copie/colle dans le fichier d'upload, mes 2 colonnes insérées ne sont pas prises en compte et une colonne est remplie d'info déjà collées dans la deuxième colonne (Voir capture d'écran appelée "PMS1" et "PMS2" le 1 est bon, le 2 est faux)

Je vous ajoute les deux fichiers en PJ, bien sur j'ai effacé la plupart des données et anonymisé les infos qui étaient bien sur confidentielles vu que ça parlait business.

Vous pourrez consulter le code VBA dans chacun des fichiers excel, j'ai supprimé la plupart des autres macros pour pas embrouiller ^^

Les pièces-jointes :

les images sus-citées

fichier qui marche.xlsm

fichier qui marche pas.xlsm

Merci d'avances pour vos réponses, et bonne fin de journée

Haya

capture pms1 pms2

Bonsoir,

voici un code qui devrait fonctionner

Sub CSV()
'
' CSV Macro
'

'
     Dim à_copier_AB, à_copier_CDE, à_copier_FG As Range
    Dim nb_lignes As String

    With ThisWorkbook.Worksheets("GLOBAL").UsedRange        'plage utilisée
         nb_lignes = .Rows.Count                             'nombre de lignes utilisées
         Set à_copier_AB = .Columns("A:B").Cells
        Set à_copier_CDE = .Columns("C:E").Cells
        Set à_copier_FG = .Columns("F:G").Cells
    End With

    Workbooks.Open Filename:="I:\ADV\GRILLES\RECO & PRECO\Grille Reco\PriceMaintenanceSheet.xls"
    With ActiveWorkbook.Worksheets("GLOBAL")
        .Columns("A:B").Resize(nb_lignes).Formula = à_copier_AB.Formula
        .Columns("D:F").Resize(nb_lignes).Formula = à_copier_CDE.Formula
        .Columns("H:I").Resize(nb_lignes).Formula = à_copier_FG.Formula
    End With

End Sub

Bonjour,

Thev, dans

Dim à_copier_AB, à_copier_CDE, à_copier_FG As Range

seul à_copier_FG est Range, les autres sont Variants. Il faut typer toutes les variables une par une.

eric

Exact. Merci de la remarque

'

Sub CSV()
'
' CSV Macro
'
     Dim à_copier_AB As Range, à_copier_CDE As Range, à_copier_FG As Range
    Dim nb_lignes As String

    With ThisWorkbook.Worksheets("GLOBAL").UsedRange        'plage utilisée
         nb_lignes = .Rows.Count                             'nombre de lignes utilisées
         Set à_copier_AB = .Columns("A:B").Cells
        Set à_copier_CDE = .Columns("C:E").Cells
        Set à_copier_FG = .Columns("F:G").Cells
    End With

    Workbooks.Open Filename:="I:\ADV\GRILLES\RECO & PRECO\Grille Reco\PriceMaintenanceSheet.xls"
    With ActiveWorkbook.Worksheets("GLOBAL")
        .Columns("A:B").Resize(nb_lignes).Formula = à_copier_AB.Formula
        .Columns("D:F").Resize(nb_lignes).Formula = à_copier_CDE.Formula
        .Columns("H:I").Resize(nb_lignes).Formula = à_copier_FG.Formula
    End With

End Sub

Bonjour,

Excusez-moi pour le délai de réponse, j'était en voyage à l'étranger.

Merci de vos réponses, j'essaie ça, et je vous tiens informés.

A plus tard

Rechercher des sujets similaires à "macro comportements differents"