Import de données d'une feuille à l'autre

messak

XLDnaute Nouveau
Bonjour,

J'ai un problème assez similaire a stuka dans ce post.

En gros j'ai un fichier avec beaucoup de données. J'aimerai en importer certaines dans une autre feuille excel. Les données du premier fichier sont séparées sur plusieurs onglets. J'aimerai que la màj se fassent automatiquement sur le deuxième fichier quand on modifie le premier.

Quelle serait la solution la plus simple/pratique pour arriver à ce résultat ?

Mes recherches sur ce forum m'ont fait penser qu'on pourrait faire ça avec une macro VBA ou bien avec un simple collage spécial.
Le problème est que mon fichier est assez volumineux. Je dois récupérer 3000 lignes à peu près.

Merci d'avance pour vos conseils,

Cordialement,
messak

EDIT : Je suis sous excel 2003.
 
Dernière édition:

messak

XLDnaute Nouveau
Re : Import de données d'une feuille à l'autre

Bonjour,

Je me permet de remonter ma discussion. J'aimerai juste avoir votre avis sur mes déductions et/ou la meilleure façon de faire selon vous.
S'il manque quelque chose à mon sujet, merci de m'en faire part, je corrigerai.

Cordialement,
messak
 

messak

XLDnaute Nouveau
Re : Import de données d'une feuille à l'autre

Bonjour,

Je précise mon problème en espérant que quelqu'un aura la gentillesse de me répondre.
Je cherche à créer un fichier excel esclave.xls formaté d'une certaine manière. Les données de ce fichier devront être récupéré d'un autre fichier maitre.xls .

Le fichier maitre contient de nombreuses données formatées toutes de la même manière dans un tableau à double-entrée par onglet. Je dois parcourir le tableau à la recherche des valeurs non nuls et reporter ces valeurs dans le fichier esclave avec les données d'entête du tableau.
Il faudrait que la création du fichier esclaves se fasse toute seul et facilement.

Je cherche comment je pourrai obtenir un tel résultat ?
Mes recherches m'ont mené à deux solution :
- un copier/coller spécial qui lierait les deux fichiers. Le problème, c'est que j'ai beaucoup de valeur à copier-coller.
- une macro, je ne sais pas faire.

Je sais pas si il y a d'autre façon de faire. Je sais pas si j'explique clairement, c'est assez complexe, un extrait de mon fichier vous aiderait à m'aider ?
Merci à ceux qui me liront.

Cordialement,
messak
 

messak

XLDnaute Nouveau
Re : Import de données d'une feuille à l'autre

Je continue mon monologue.

J'ai uploadé un extrait du fichier ici, ce sera plus parlant : Free - Envoyez vos documents
Les données à récupérer sont dans l'onglet "sortie". Les informations sont a pioché dans les tableaux des onglets "Dépenses cf (x)".
Le fichier complet contient plus d'onglets et certains ne sont pas utile. Il ne sont pas nommées pareil.

S'il vous plait, merci de m'aider, j'ai vraiment besoin de conseil.
 

david84

XLDnaute Barbatruc
Re : Import de données d'une feuille à l'autre

Bonjour Messak,
j'ai regardé ton fichier et je n'ai vu aucune indication me permettant de comprendre quelle est ton attente exacte : tes onglets"dépenses cf" ne comportent aucune données et je ne vois pas le rapport entre l'onglet sortie et les autres.
Le plus simple serait que tu marques manuellement sur ton fichier un exemple de résultats attendus avec des explications permettant de comprendre ton raisonnement.
Pas la peine de mettre autant d'onglets, tu pourras ensuite adapter les propositions qui pourraient t'être faites.
Si tu peux, compresse le fichier et place-le sur le site ou sinon place-le sur cijoint.fr
Cordialement
 

messak

XLDnaute Nouveau
Re : Import de données d'une feuille à l'autre

Bonjour,

J'ai répondu à l'instant à une demande similaire (ou très proche) :

https://www.excel-downloads.com/thr...seur-different-en-restant-synchronise.140889/

Pour ramener 3000 données, il suffit d'étendre la formule d'une cellule à l'ensemble du tableau.

Il serait sage de ne pas commencer trop de posts sur la même problématique

Bonjour Ubot303,

On obtient cette formule en faisant un collage spécial. Ca fait ce que je veux mais le problème, c'est que je dois faire le copier coller à la main et les données sont nombreuses et dispersées.
Si une cellule est égale à 0, je n'ai pas à la récupérer. Sauf que la cellule peut etre egale a 0 sur cette onglet et avoir une valeur non nul dans un autre onglet. Je pourrait pas donc effectuer un truc qui récupère toute les cellules G52 de chaque classeur par exemple. (je suis même pas sure de pouvoir le faire ainsi...)
Merci pour ta réponse.

Bonjour Messak,
j'ai regardé ton fichier et je n'ai vu aucune indication me permettant de comprendre quelle est ton attente exacte : tes onglets"dépenses cf" ne comportent aucune données et je ne vois pas le rapport entre l'onglet sortie et les autres.
Le plus simple serait que tu marques manuellement sur ton fichier un exemple de résultats attendus avec des explications permettant de comprendre ton raisonnement.
Pas la peine de mettre autant d'onglets, tu pourras ensuite adapter les propositions qui pourraient t'être faites.
Si tu peux, compresse le fichier et place-le sur le site ou sinon place-le sur cijoint.fr
Cordialement

Bonjour david84,

En effet, je n'ai pas mis d'annotation dans le fichier excel, j'ai pensé que mes posts suffiraient à la compréhension de mon problème mais j'ai du mal à m'expliquer, désolé.

Ce que je souhaite obtenir c'est l'onglet "sortie" dans un nouveau fichier .xls.
Les données de cette onglet sont toute tiré des onglets "Dépense cf (x)".

L'onglet "Dépenses cf" est à zéro partout, c'est un gabarit en gros. Par contre "Dépenses cf (2)" lui contient des valeurs.

Par exemple pour "Dépenses cf (2) :
- En C 38, on a 65650, cette valeur est retrouvé dans l'onglet "sortie" en G 4.
- Sur la même ligne 4 de "sortie", 1111 et 601 correspondent aux entêtes du tableau à double entrée en C 8 et en A 38 dans l'onglet "Depense cf (2)".
- 209_02 est lui disponible en C 2 de chaque onglet "Dépenses (x)".

C'est ces 4 valeurs de l'onglet "Dépenses (x)" que j'aimerai récupéré pour chaque ligne non nul de chaque onglet.


Je pense avoir été un peu plus claire. Le problème est assez complexe et je commence à m'arracher les cheveux dessus. Je commençais à envisager de tout copier/coller à la main comme le préconise Ubot303.

Mes excuses pour le manque de clarté de mes premiers posts. Merci pour vos réponses.

Cordialement,
messak
 

david84

XLDnaute Barbatruc
Re : Import de données d'une feuille à l'autre

Re;
Si j'ai bien compris, tu veux 2 fichiers distincts (2 classeurs Excel) liés entre eux.
Peut-être que ce lien te servira :
Formation Excel VBA JB
Voir :"consolidation de classeur avec données/consolider
Sinon, par macro mais je ne sais pas faire (à moins que tes 2 classeurs soient ouverts, auquel cas pourquoi ne pas tout mettre sur 1 seul ?).
Cordialement
 
Dernière édition:

messak

XLDnaute Nouveau
Re : Import de données d'une feuille à l'autre

Re;
Si j'ai bien compris, tu veux 2 fichiers distincts (2 classeurs Excel) liés entre eux.
Peut-être que ce lien te servira :
Formation Excel VBA JB
Voir :"consolidation de classeur avec données/consolider
Sinon, par macro mais je ne sais pas faire.
Cordialement

C'est pas vraiment ce que je veux faire. Merci quand même pour le lien et la fonction Consolider que je ne connaissais pas.

Cordialement,
messak
 

messak

XLDnaute Nouveau
Re : Import de données d'une feuille à l'autre

Bonjour,

Apparemment, je peux seulement faire ce que je veux en macro VBA.
J'ai fait un petit algorithme :

// Explication de l'algo
// On parcours le tableau que sur certaines lignes contenu dans un tableauX (pour eviter de parcourir les totaux)
// Pendant notre parcours, on recupere le centre financier, montant, compte budgetaire, et domaine fonctionnel qu'on ecrira dans les bonnes colonnes du fichier de sortie

tableauX; // les lignes à parcourir classées dans un tableau

for (parcours onglet de 1 à n)
lire C2 = centrefinancier
for (parcours tableauX = ligneX)
lire ligneX de C à BC = montant
if (montant != 0 OR != null)
recuperer les coordonées de cette case dans variable ligneX, colonneY
retourner montant = montant, AligneX = comptebudgetaire, colonneY8 = domainefonctionnel
fin if
ecrire dans fichier sortie les variables centrefinancier, montant, comptebudgetaire, domainefonctionnel
fin for
fin for

Je sais pas du tout si le langage VBA fonctionne ainsi...

Cordialement,
messak
 

Ubot303

XLDnaute Occasionnel
Re : Import de données d'une feuille à l'autre

Ok pour ton algo mais encore faudrait-il connaitre un minimum le langage dans lequel tu codes...

La boucle :

For i = 1 to sheets.count 'va parcourir les onglets
...
Next

Dans ta première boucle, "sheets(i)" permet de retourner l'onglet en cours de scan.
Donc sheets(i).cells(2,3).value va te donner le contenu de la cellule C2.

Tu peux imbriquer une seconde boucle avec un autre indice pour parcourir les lignes, tu peux réutiliser cells(2,3) pour récupérer une autre case comme le montant total

Pour écrire les données dans un onglet recap :
Sheets("Recap").cells(1,1) = sheets(i).cells(2,3).value
La cellule A1 de l'onglet recap sera la cellule C2 de l'onglet en cours de scan dans ta première boucle...

Voila pour la boîte à outil VB à toi de jouer ;)
 

messak

XLDnaute Nouveau
Re : Import de données d'une feuille à l'autre

Bonjour Ubot303,

Merci pour ton aide.
J'ai écrit l'algo en francais pour savoir si j'étais sur la bonne voie dans ma façon de faire. J'ai très peu d'expérience en programmation. Un peu de développement web il y a quelques temps et c'est tout.
C'est pour ça que j'ai un peu de mal avec le VBA que je n'ai jamais pratiqué.

J'essaye de faire marcher tes lignes juste pour récupérer le centre financier. J'ai déjà du mal...

Cordialement,
messak
 

messak

XLDnaute Nouveau
Re : Import de données d'une feuille à l'autre

Je commence à avancer un peu. :p
J'ai par contre un petit problème la ou je comprend pas vraiment le comportement du VBA.

Voila le code :
Code:
Sub Macro1()
    For i = 1 To Sheets.Count
        Dim CF As String
        CF = Sheets(i).Cells(2, 3).Value
        Sheets("recap").Cells(i, 2) = CF
        Dim x As Integer
        Dim MONTANT As Integer
        x = 3       
        For x = 3 To x = 55
            MONTANT = Sheets(i).Cells(38, x).Value
            MsgBox MONTANT
            x = x + 1
        Next
    Next
End Sub

Il ne rentre jamais dans le "For x = 3" alors que j'ai déclaré toutes les variables.
Il ne m'affiche jamais le MsgBox, c'est pour ça que je pense qu'il n'y rentre pas.

Merci pour l'aide. :eek:
 

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 695
Membres
105 511
dernier inscrit
karimdauphins