Transfere de données en VBA

j_ose

XLDnaute Nouveau
Bonsoir a tous,

Tout d’abord n’étant venu sur le forum depuis le début l’année je vous souhaite une très belle année 2015.

Voici ma demande, je reçois tous les mois de la part du fournisseur les volumes de sodas sous le même format (Feuil1), après cela je fais un copier/coller sur la Feuil2, c’est assez long il y a une cinquantaine de clients.

Je souhaiterais optimiser la manip, transférer en VBA les éléments en couleur de la Feuil1 vers la Feuil2. Je ne sais pas le faire mais je voudrais bien comprendre le principe.
Merci pour votre aide et surtout vos explications
Bonne soirée

Cordialement
 

Pièces jointes

  • Classeur1.xlsx
    14.2 KB · Affichages: 66
  • Classeur1.xlsx
    14.2 KB · Affichages: 71
  • Classeur1.xlsx
    14.2 KB · Affichages: 69

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Transfere de données en VBA

Bonsoir j_ose et mes meilleurs vœux pour cette nouvelle année :),

Un essai dans le fichier joint. Comme ce n'était pas précisé dans la question, les nouvelles données sont rajoutées en fin de tableau de la feuille "Feuil2" et on n'efface pas le tableau existant.

La macro demande à l'utilisateur de sélectionner la cellule du tableau source (celui du fournisseur) qui contient l'en-tête "Mois". A partir de cette cellule, la macro considérant que le tableau a toujours la même structure, se débrouille. Les nombre de lignes et de colonnes clients peuvent être variables.

Pour ce qui est de la feuille où on colle le résultat, une constante (NomFeuilleResultat) doit indiquer son nom en début de macro.

Le code est dans le module de code module1.

Le code est commenté...
 

Pièces jointes

  • j_ose-de feuille 1 à feuille2-v1.xlsm
    27.1 KB · Affichages: 19

j_ose

XLDnaute Nouveau
Re : Transfere de données en VBA

Bonsoir mapomme , bonsoir a tous,

Ravi de te lire de nouveau, merci pour ton essaie j’ai testé avec plusieurs mois et ça fonctionne parfaitement, j’avoue que j’ai une de mal avec le langage VBA mais je m’accroche.:p

Dans mon tableau les colonnes vide exemple, Restaurant, Fournisseur se remplisse automatique avec une formule INDEX ;EQUIV qui va pointer sur une autre feuille.

J’ai ajouté les formules sur le premier mois, puis je les ai fait glisser pour les mois à venir. Malheureusement l’import écrase les formules. Est il possible qu’après importation les formules ne soient pas effacées ?

Bonne soirée
Cordialement
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Transfere de données en VBA

Bonsoir j_ose :),

(...)
Dans mon tableau les colonnes vide exemple, Restaurant, Fournisseur se remplisse automatique avec une formule INDEX ;EQUIV qui va pointer sur une autre feuille.

J’ai ajouté les formules sur le premier mois, puis je les ai fait glisser pour les mois à venir. Malheureusement l’import écrase les formules. Est il possible qu’après importation les formules ne soient pas effacées ? (...)

Si j'ai bien compris le problème, voici une version v2. Dans le tableau final, j'ai mis des formules "bidon" pour les tests (cellules en vert clair).

Je vais m'absenter pour quelques temps. Il faut tester vite pour dire si ça te conviens ou non.
 

Pièces jointes

  • j_ose-de feuille 1 à feuille2-v2.xlsm
    32.4 KB · Affichages: 12

klin89

XLDnaute Accro
Re : Transfere de données en VBA

Bonsoir j_ose, mapomme, le forum :)

Ma version, résultat en Feuil3.
VB:
Sub Reorganise()
Dim a, i As Long, j As Long, k As Long, b(), n As Long, Cclient As String
    Application.ScreenUpdating = False
    a = Sheets("Feuil1").UsedRange.Value
    ReDim b(1 To UBound(a, 1) * UBound(a, 2), 1 To 13)
    For i = 4 To UBound(a, 2) Step 2
        Cclient = a(2, i)
        For j = 4 To UBound(a, 1)
            n = n + 1
            b(n, 1) = a(j, 1)
            b(n, 2) = Cclient
            b(n, 3) = ""
            b(n, 4) = ""
            b(n, 5) = ""
            b(n, 6) = a(j, 2)
            b(n, 7) = ""
            For k = 0 To 1
                b(n, k + 8) = a(j, i + k)
            Next
            b(n, 10) = ""
            b(n, 11) = ""
            b(n, 12) = ""
            b(n, 13) = ""
        Next
    Next
    With Sheets("Feuil3").Cells(1).Resize(, 13)
        .CurrentRegion.Clear
        .Value = Array("Mois", "Code Client", "Societe", "Restaurant", "Fournisseur", "RefArticle", _
                       "Article", "Qté", "C.A", "Unité", "Dilution", "Sucré", "Edulcoré")
        With .Offset(1).Resize(n)
            .Value = b
            With .CurrentRegion
                .BorderAround ColorIndex:=1, Weight:=xlThin
                .Borders(xlInsideVertical).Weight = xlThin
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .Font.Name = "tahoma"
                .Font.Size = 10
                .Columns(6).Interior.ColorIndex = 44
                With .Rows(1)
                    .RowHeight = 18
                    .BorderAround ColorIndex:=1, Weight:=xlThin
                    .Interior.ColorIndex = 22
                    .Font.Size = 10
                End With
                .Parent.Activate
            End With
        End With
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 

Pièces jointes

  • Reorganise.xls
    46.5 KB · Affichages: 24

j_ose

XLDnaute Nouveau
Re : Transfere de données en VBA

Bonjour mapomme, klin89, le forum :)

Je viens de tester la version v2 et ça fonctionne très bien, c’est ok pour moi.

A bientôt sur le forum pour de nouveaux échanges. (ne part pas trop longtemps ;)

Klin89 merci pour ton retour très intéressant mais contrairement a la proposition de mapomme , lorsque l’on change de mois , celui écrase le précèdent alors que je souhaite que les nouvelles données soient rajoutées en fin de tableau sans effacé le tableau existant.

Merci à vous deux
Bonne journée

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz