XL 2016 exporter des données d'un classeur a l'autre [RESOLU]

chrisdu86

XLDnaute Nouveau
Bonjour à tous,

Je me permet de venir vers vous afin de pouvoir (dans la mesure du possible) m'aider à réaliser un code que je suis sûr sera d'une extrême simplicité pour vous.

Voici le concept : J'ai un gros fichier excel (2016) qui fait office de base de données (BDD-GLOBAL), il comporte beaucoup de colonne, puis j'ai un second classeur (BDD-FICHES) qui me permet de placer certaines valeur me permettant par la suite de créer des rapport de conformités...

le fonctionnement de la BDD est simple, chaque ligne concerne une fiche (rapport de conformité)
Ce que je voudrais ces recopier certaines info des ligne dans la BDD-FICHES,

J'ai le code pour lui faire reconnaitre les classeurs mais je sais pas comment lui faire faire le reste, si vous auriez une piste, je pense qu'il faut que je fasse une boucle for each...next mais je ne maitrise pas encore assez bien VBA, j'ai pensé utiliser les Cells aussi... assez confus dans ma tête ;)


Merci a tous pour avoir pris le temps de me lire

A bientôt

Chrisdu86
 

gosselien

XLDnaute Barbatruc
Bonjour,
tu remarqueras que sans fichier exemple (20-30 lignes) tiré des vrais fichiers on ne saurait rien faire pour toi ..

P.
 

gosselien

XLDnaute Barbatruc
re,

tu ne dis pas sur base de quelle(s) colonne(s) tu veux rapprocher ces 2 fichiers ?
y a t-il dans "bdd-global" une colonne de données uniques qui permettrait de faire le lien avec la même donnée de l'autre fichier (en formule, sans vba pour ma part) ?
P.
 

chrisdu86

XLDnaute Nouveau
Re,

En fait, j'ai du mal m'expliquer, je vais essayer d'être le plus précis possible.

Je voudrais passer par le VBA pour des questions de rapidité, le but est d'exporter certaine données de la BDD globale vers BDD-FICHE, exemple :

Prenons le cas de la première ligne, admettons que je veuille récupérer les valeurs contenu dans les 6 premières colonnes de la ligne (ATELIER,BATIMENTS,SALLE,BLOC,NIVEAU,UNITE), je clique sur mon bouton et elle se mettent dans la BDD-FICHE.

C'est cette methode que je souhaite mais pour toute la BDD-GLOBALE

Les deux BDD sont la même chose, sauf que la seconde contient moins d'infos, et n'est pas très envie de me les faire à la main, le fichiers original comporte beaucoup de ligne...

Est assez claire ? (j'ai un doute)

Encore merci
 

chrisdu86

XLDnaute Nouveau
Re,

Et si je fait une chose du genre :
(bien-sure je declare mes variables

VB:
options explicit
Dim l as Integer
Dim wk1, wk2 as workbook
Dim rep, classeurpath as string
'........
rep  = Environ("USERPROFILE") & "\"
classeurpath  = rep & "chemin du classeur"
set wk1 as ThisWorkBook
l = 2

Dim derniere_ligne as Long
set wk2 as WorkBooks.Open(classeurpath)

For Each (toute les lignes du tableau) in wk1
Le code n'est pas complet mais c'est juste pour voir si je suis dans la bonne direction
 

gosselien

XLDnaute Barbatruc
Est ce vraiment utile et nécessaire en vba ?
Je ne vois pas sur quels critères tu reprends les infos de l'un vers l'autre , tu ne donnes pas assez d'info à mon avis, mais il y a bien plus fort que moi ici qui pourront t'aider mieux, sorry :)
P.
 

chrisdu86

XLDnaute Nouveau
Est ce vraiment utile et nécessaire en vba ?
Je ne vois pas sur quels critères tu reprends les infos de l'un vers l'autre , tu ne donnes pas assez d'info à mon avis, mais il y a bien plus fort que moi ici qui pourront t'aider mieux, sorry :)
P.
Je prend en référence les colonnes "ATELIER" et "REPERE FONCTIONNEL" car on peux trouver plusieurs défaut sur un élément d'un atelier... j'ai peut-être une solution en faisant une boucle, je m'explique :

sachant que mes données sur la BDD-GLOBALE démarrent a la ligne 2 du tableau, si je fais une boucle du style :

For i = 2 to ligne_fin
'mon code
next i

En prenant soin bien sure de definir ma ligne_fin et de préciser sur quel classeur il doit travailler ? ça evite d'avoir une colonne de reference si ce n'est pour la ligne_fin...
 

chrisdu86

XLDnaute Nouveau
Bonjour à tous,

Donc toujours sur ma recherche de solution, j'ai écris un code dont je pensais bon, mais a priori non, il n'y a pas de bug mais il ne faire rien du tout, il m'ouvre mon classeur uniquement... voici ce que j'ai écris :

VB:
Option Explicit
Dim BDD, wk2 As Workbook                                                                            'Déclaration des classeur
Dim rep, classeurpath As String
Dim i As Integer
Dim derniere_ligne As Long
'Callback for btLance01 onAction
Sub transfert(control As IRibbonControl)                                                    'Ce module permet de faire le transfert entre BDD

rep = Environ("USERPROFILE") & "\"
classeurpath = rep & "\Documents\EIPinspection\Rapport\BDD_FICHES.xlsm"

Set BDD = ThisWorkbook
i = 2

'ouverture du classeur
 
Set wk2 = Workbooks.Open(classeurpath)
wk2.Sheets("BDD-export").Activate
derniere_ligne = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
i = derniere_ligne + 1

        With BDD.Sheets("BDD-simplifiee")
            For i = 2 To derniere_ligne
                wk2.Sheets("BDD-export").Cells(i, 1).Value = BDD.Worksheets("BDD-simplifiee").Range("BU" & i).Value                      'Photo globale
                i = i + 1
            Next i

End With
End Sub
Si vous auriez une piste ;)

Merci beaucoup
Christian
 

chrisdu86

XLDnaute Nouveau
Bonjour a tous,

Finalement je laisse se poste et le met en résolu, je n'ai pas eu besoin, je me suis cogné les transfert a la main ce qui m’a permis également de faire une vérification de la BDD, en tous les cas merci pour avoir voulu m'aider ;)

chrisdu86
 

Discussions similaires


Haut Bas