Transfert par liaisons

Bonjour à tous,

je ne vous cache pas que j'ai déjà posé ma question ailleurs, mais depuis 3 jours, je n'ai pas obtenu de réponse.

Je suis à la recherche d'une possibilité éventuelle de générer des fichiers par liaisons, j'ai les idées, mais pas LA CONNAISSANCE d'excel pour mettre concrètement en application ce que je voudrais faire, en espérant que de travailler sur MAC, ne me bloquera pas dans ce que je veux faire.

Je vais tenter de vous soumettre mon problème.

J'ai un tableau que je mets à jour quotidiennement, Il s'agit du récapitulatif des ventes détaillées d'un de nos plus gros clients, les ventes nous arrivant via les succursales de ce client, je vous joins un modèle exemple de tableau se nommant Relevé hebdomadaire.

Chaque fin de mois, je dois procéder à des relevés par succursales, notre client compte un 15ène de succursales.

Donc beaucoup de manipulations rapport au tableau complet où j'ai plusieurs onglets, des relevés divers et variés de statistiques produits et chiffres, que je ne peux communiquer par contre aux succursales.

Ce que je voudrais faire, si c'est possible, c'est automatiser sur un autre fichier par mode de transfert par liaison, les relevés par succursales (un onglet par succursale), donc sur la données de base SUCCURSALES. Je vous joins un autre tabelau qui se nomme : Releve succursales.

J'ai tenté d'introduire diverses données : =SOMMEPROD(ESTNUM(CHERCHE("*M*";'[Releve hebdomadaire]Feuil1'!$A$2:$A5))*ESTNUM(CHERCHE("*13*";'Releve hebomadaire'!$F$2:$F5)))

Je me suis rendu compte que cette fonction ne pouvait pas aller étant donné que j'ai besoin que le numéro de département s'affiche et non le cumul du nombre de dossier traité

les données impératives à imposer étant :

Réf. M

Réf. I

Réf. C

En fait, par ligne, les informations doivent restée rattachées à la ligne de report de département, et ce à chaque fois que je vais saisir une ligne correspondant au dit département.

De plus, les lignes reportées ne doivent pas s'effacer, et pour compliquer la chose, l'insertion de ligne si possible devra se faire automatiquement, puisque nous pouvons atteindre un nombre de ligne important à la fin de l'année.

Je sais que dès lors où la colonne A, ou B, ou C est renseignée, je peux paramétrer la fonction RECHERCHEV, si cette fonction introduite peut-être moins lourde que tout autre fonction.

J'espère que mon charabia est tout de même un peu compréhensible et que j'obtiendrai, si ça n'est une solution, un aiguillage pour m'en sortir.

Je vous remercie de l'aide que vous pourriez m'apporter.

27archive.zip (12.72 Ko)

Bonjour

1) RECHERCHEV ne sera pas la solution car cette fonction te renverra toujours la première valeur rencontrée.

2) Tes tableaux sont représentés en 3 séquences

Sur la Feuille relevé hebdomadaire

  • Lignes 2 à 5
  • Lignes 6 à 10
  • Lignes 11 à 15
Est-ce pour une raison de présentation ou pour quelle raison.

3) A partir de la remarque 2, faut il procéder de même sur les feuilles relevés succursales

Pourquoi ne pas inscrire tout en suivant sans laisser des lignes blanches?

A te lire

Cordialement

Alors là c'est du TOP, une réponse, je suis CONTENTE, je te remercie pour celle ci.

Sur le relevé hebdomadaire, oui, la différence entre les "blocs" de lignes est importantes, je saisis Les Réf. M à la suite, les Réf. I idem et Réf. C de même.

Par contre, sur le tableau sur lequel je souhaite effectuer les transfert, je ne pense pas que cela ait d'importance, ce serait bien si, mais si pas possible de maintenir cette caractéristique il faudra bien qu'ils se contente de ce qu'ils auront. L'important pour eux étant de recevoir un tableau où il pourront rechercher, d'une année à l'autre, via réf. client ou nom, les caractéristiques de leur commande passé, voir les réf. d'enregistrement chez nous.

Bonjour,

Par code VBA on peut faire ceci :

Sub transfert()
'Macro Dan pour flots le 27/07/2010 - XLPratique
' http://forum.excel-pratique.com/excel/transfert-par-liaisons-t18300.html
Dim chemin As String
Dim ref As Workbook
Dim cel As Range
chemin = ThisWorkbook.Path
Workbooks.Open Filename:=chemin & ":" & "Releve succursales.xls" 'Workbooks(ref)"
Set ref = Workbooks("Releve succursales.xls")
With ThisWorkbook.Sheets("Feuil1")
For Each cel In .Range("F2:F" & .Range("F65536").End(xlUp).Row)
On Error Resume Next
If cel <> 0 Then
    .Range("A" & cel.Row & ":O" & cel.Row).Copy _
        ref.Sheets(CStr(cel)) _
        .Range("A" & ref.Sheets(CStr(cel)).Range("F65536").End(xlUp).Row + 1)
End If
Next
End With
End Sub
  • Le code est à placer en VBE dans un module et ce, dans le fichier "Releve hebdomadaire.xls". Pour y accéder --> ALT + F11 puis faire "Insertion Module" et coller le code ci-dessus.
  • Sur la feuil1 du fichier "Releve hebdomadaire", dessine ensuite un bouton par la barre d'outils "Formulaire" (via affichage --> barre d'outils --> Formulaire) et puis sélectionner la macro "transfert" dans la boite de dialogue
  • Pour envoyer les données il te suffit de cliquer sur le bouton dessiné sur ta feuil1.

Quelques conseils :

  • Mettre tes deux fichiers dans le même répertoire !
  • Dans le fichier Releve succursales, ne pas nommer les feuilles par "03" (par exemple) mais bien "3"

Amicalement

Bonjour Dan et merci pour ta réponse.

Je vais testé voir ce que cela donne,

là où cela m'inquiète le plus, c'est le fait que je travaille sur Mac, et parfois les macro..., ça n'est pas ça qu'est ça...

je te tiens au courant.

-- Mer Juil 28, 2010 1:46 pm --

YES !!!

ÇA MARCHEUUUU !!!

mais, petit questions :

- il faut que je le test sur mon fichier hebdomadaire existant, qui comprend plus de colonnes que ce "petit" modèle.

Est-ce que cela va changer quelque chose à la Macro à paramétrer ?

  • question IDEM pour le tableau de réception, si je rajoute des colonnes ???
  • si après je génère un fichier par mode d'enregistrer sous, par succursales, les données ne se perdent pas ?

Je teste sur mon tableau de base et je re-viens parmis vous vous dire ce qu'il en est.

Merci, merci, et encore merci.

-- Mer Juil 28, 2010 2:09 pm --

Bon, tout ne va pas fonctionner complètement du premier coup, ce serait formidable si s'était le cas, n'est ce pas ?!?!

Lorsque je te tente d'accéder sur mon tableau de base au ..., zut je ne sais pas comment appeler ça autrement que Module VBA(ou VBE) comme tu le nommes, ben ça ne marche pas, mon excel plante et replante, et plante encore et toujours...

peut-être mon fichier, dans son ensemble est trop lourd, je ne sais pas ...?...?...?

(pour accéder au(x) code(s) sur Mac, ALT + F11 ça ne marche pas, moi je fais CTRL + clic souris, une fenêtre s'ouvre et choisir VISUALISER LE CODE, toute la partie MACRO s'ouvre alors.)

Bonjour

Une solution par formules

Les détails sont sur la feuille Explications

Cordialement

17flots.zip (73.74 Ko)

Pour l'instant je ne peux dire qu'une chose : première fois que je reçois une explication aussi claire, limpide et précise.

Je t'en remercie d'autant plus.

Pour la mise en application dans les tableaux de base, je ne pourrais te dire que demain, mon choix est de ne pas avoir excel à la maison (pour l'instant) je bosse suffisamment dessus la journée, le soir je repose mes neurones.

Donc je vais lire ton explication en plus approfondi déjà et je tenterai de mettre tout ça en place demain.

Merci 1000 fois en tout cas, je suis contente de vous avoir re-trouvé, j'avais déjà posté et je ne m'en souvenais même pas, tous les chemins menant à Rome, je vous ai retrouvé, sans aucun regret, en espérant que je ne vous saoulerai pas trop avec mes interrogations, et mes coupures parfois aussi, parce que quand je reçois une BONNE LEÇON je tente de la mettre en application et parfois je me mets du travail de plus sur le dos.... alors moins de temps de trainer.

Enfin, je ne vais pas vous raconter ma vie, hein, on n'est pas là pour ça. Hé ! Hé !

Bonne fin de journée à tous, et bonne soirée.

Re,

Le code fonctionne sous MAC. Je peux te le confirmer puisque je suis sous MAC également et le code a été conçu et testé sous MAC.

Ce qu'il faut savoir :

  • Le nom exact de tes fichiers
  • L'endroit où ils se trouvent dans ton ordi.

Si tu ajoutes des colonnes... je suppose que les deux fichiers comportent le même nombre de colonnes sinon il me faut un exemple exact des deux fichiers et surtout savoir quelle est la dernière colonne.

ALT + F11 ça ne marche pas

Sous excel 2004, cela fonctionne à moins que tu aies changé la définition des raccourcis. Tu peux aussi essayer par OUTILS / MACRO / VISUAL BASIC EDITOR

Amicalement

Bonjour à tous,

Une nouvelle journée, qui ne commence pas forcément bien, c'est ça d'être parisien et présent durant les vacances, on subit les fermetures d'accès pour travaux annuel....

Bon depuis que je suis arrivée au boulot, je suis sur mes tableaux à tenter de reproduire ce qu'Amadéus m'a donné comme solution, qui fonctionne très bien dans ses modèles, mais pas encore sur mes modèles, beaucoup de points sont à adapter à mes tableaux existants. Ça ne marche pas encore, mais j'y arriverai, parce que je ne suis pas complètement à la masse, je vais juste tenter de faire fonctionner ça avant mon départ en vacances.

Merci encore Amadéus, sans toi, je serais super hyper méga loin de ma solution.

Réf. message de DAN,

1000 excuses à toi, effectivement la fonciton ALT + F11 fonctionne bien, j'ai du me tromper de touche, je navigue entre PC à la maison et Mac au boulot, parfois je me plante.

Par contre lorsque je paramètre la VBA sur mon fichier, immanquablement mon excel plante et replante.

Pourquoi ? là c'est un immense mystère pour moi.

Mais merci tout de même pour ta solution, que je testerais sur un autre poste dès que je pourrais.

Re,

Mets ton fichier en ligne, je te donnerai un avis.

A te relire

Dan a écrit :

Re,

Mets ton fichier en ligne, je te donnerai un avis.

A te relire

Re-Dan,

mettre mon fichier en ligne ?!?!? blurps, je ne peux point faire ça, j'ai plus d'un an de boulot dessus, et comme toutes les entreprises, les données, sans être ultra confidentielles, sont confidentielles tout de même...

je suis sous le couvert de même avec mon contrat de travail, d'une clause de confidentialité,

et je sais que tu ne peux m'aiguiller sans avoir le minimum d'info.

Je n'abandonne pas pour autant, 2011 n'est pas loin, je tenterais ta solution sur un fichier "quasi vierge" (il contiendra toujours le stock de l'année passée, mais pas encore le stock de l'année commençant).

Au mieux de toute façon je tenterai sur un autre ordi, que ce soit Mac ou Pc, je ne m'avoue pas vaincu pour autant.

Et pour l'instant je suis en train de me battre pour tenter de mettre en application la solution de Amadéus, qui marche tellement bien sur les fichiers qu'il a paramétrés, mais pas vraiment encore sur les miens, je dois louper une modif quelque part, je ne désespère pas non plus, parfois il m'a fallut 1 à 2 semaine(s) pour me rendre compte de là où ça ne pouvait fonctionner.

Au pire je reviens par ici, je sais désormais que vous êtes des "trésors" d'info et surtout précis dans ce que vous expliquez et apportez comme solutions.

Merci encore

re,

Les fichiers postés sur ce forum ne doivent pas contenir de données confidentielles.

Dans ton cas, il te suffisait (si possible) de supprimer les données confidentielles.

Si cela n'est pas possible, vois avec le fichier que je te joins.

Dans le fichier Releve hebdomadaire.xls, clique sur le bouton pour transférer les données vers l'autre fichier.

Je te rappelle que les deux fichiers doivent être dans le même répertoire.

A noter qu'à l'ouverture du fichier "succursales", tu auras un message te demandant d'accepter les liaisons ou non. Ce message est du au fait que tu as placé des formules qui font appel au fichier Releve hebdomadaire. Il te suffit de supprimer les liaisons puisqu'elles ne serviront pas pour la macro en question.

19archive.zip (21.05 Ko)

Bonjour Dan

Chez moi (Rxcel 2003 ) j'ai un message d'erreur.

Ne serait-il pas plus facile et plus rationnel de créer pour chaque relevé les feuilles des succursales concernées, puis, si cela est vraiment necessaire déplacer ces feuilles dans un nouveau classeur (donc déplacer de la Sheet(3) à la dernière, puis d'enregistrer ce nouveau classeur sous "Releve succursales + date"

Je bute sur la 2éme partie qui ne dois pas être un problème insurmontable pour toi si cette solution interesse flots bien sur.

Pour ce qui est de la première partie, voir le fichier joint

Cordialement

Bonjour à tous,

je passe par ici en coup de vent, histoire de ne pas avoir l'air d'être venue chercher une info en partant tout de suite après comme une voleuse.

Bien au contraire,

travail oblige, les premiers vacanciers s'en sont allés, double, voir triple d'activité pour ceux qui restent.

Et puis à la fin de semaine ce sera mon tour de partir.

Je reviendrai donc par ici à la rentrée, pas moyen de faire autrement, en espérant que le travail me donnera le temps de passer pour approfondir, parce que pour l'instant je n'ai pas réussi à mettre en application, mais je ne désespère pas pour autant.

Alors d'ici là, bon courage à ceux qui rentrent, et bonne vacances à ceux qui vont certainement partir d'ici peu.

Re,

Pour Amadeus

Ne serait-il pas plus facile et plus rationnel de créer pour chaque relevé les feuilles des succursales concernées, puis, si cela est vraiment necessaire déplacer ces feuilles dans un nouveau classeur (donc déplacer de la Sheet(3) à la dernière, puis d'enregistrer ce nouveau classeur sous "Releve succursales + date"

Effectivement on pourrait aussi faire dans cet esprit ou alors déplacer toutes les feuilles (sauf les deux premières) dans un nouveau classeur à sauvegarder dans un répertoire.

Pour Flots: ok bien lu le message. On attend tes infos à ce sujet si tu souhaites des modifications de ce qui a été proposé.

Amicalement

Bonjour au forum,

en espérant que tout le monde a passé d'excellentes vacances.

Pour ma part, rentrée depuis lundi dernier, j'avais tant de travail en standby que je n'ai pu passé par ici avant.

Maintenant que j'ai tout liquidé le retard, je peux enfin revenir vers vous et surtout sur ce sujet qui me tracasse.

Je reviens donc vers toi Dan, qui m'indique cette solution et que j'ai pris le temps de reporter sur mon tableau initial.

Pour ce faire, j'ai modifié :

  • Releve succursales.xls : par le nom exact de mon fichier de base
  • F2:F : par L2:L correspondant à ma colonne département sur mon fichier de base
  • F65536 : idem colonne L donc L65536

malgré ces modifications, je me heurte à un débogage sur la ligne :

With ThisWorkbook.Sheets("Feuil1")

j'ai tenté de renommé cette feuille, rien n'y fait.

J'ai bien suivi tes indications comme tu me les a si bien détaillées à la suite de ta macro, je ne pense pas que le problème vienne de là.

Au plaisir de te lire donc.

Dan a écrit :

Bonjour,

Par code VBA on peut faire ceci :

Sub transfert()
'Macro Dan pour flots le 27/07/2010 - XLPratique
' http://forum.excel-pratique.com/excel/transfert-par-liaisons-t18300.html
Dim chemin As String
Dim ref As Workbook
Dim cel As Range
chemin = ThisWorkbook.Path
Workbooks.Open Filename:=chemin & ":" & "Releve succursales.xls" 'Workbooks(ref)"
Set ref = Workbooks("Releve succursales.xls")
With ThisWorkbook.Sheets("Feuil1")
For Each cel In .Range("F2:F" & .Range("F65536").End(xlUp).Row)
On Error Resume Next
If cel <> 0 Then
    .Range("A" & cel.Row & ":O" & cel.Row).Copy _
        ref.Sheets(CStr(cel)) _
        .Range("A" & ref.Sheets(CStr(cel)).Range("F65536").End(xlUp).Row + 1)
End If
Next
End With
End Sub
  • Le code est à placer en VBE dans un module et ce, dans le fichier "Releve hebdomadaire.xls". Pour y accéder --> ALT + F11 puis faire "Insertion Module" et coller le code ci-dessus.
  • Sur la feuil1 du fichier "Releve hebdomadaire", dessine ensuite un bouton par la barre d'outils "Formulaire" (via affichage --> barre d'outils --> Formulaire) et puis sélectionner la macro "transfert" dans la boite de dialogue
  • Pour envoyer les données il te suffit de cliquer sur le bouton dessiné sur ta feuil1.

Quelques conseils :

  • Mettre tes deux fichiers dans le même répertoire !
  • Dans le fichier Releve succursales, ne pas nommer les feuilles par "03" (par exemple) mais bien "3"

Amicalement

Entre temps je viens de me rendre compte d'où peut venir le problème :

Sur mon fichier de base, j'ai une douzaine de feuilles actives, donc, si j'ai bien tout compris il faut que dans le code je donne l'indication de la page d'où proviennent les informations, "dans ton code à la donnée : Releve succursales.xls (x2).

Le problème étant que je ne sais comment l'indiquer.

Re,

malgré ces modifications, je me heurte à un débogage sur la ligne :

With ThisWorkbook.Sheets("Feuil1")

j'ai tenté de renommé cette feuille, rien n'y fait.

Dans le fichier "Relevé hebdomadaire", comment se nomme la feuille où se trouve les info. dans ce fichier j'ai deux feuilles : "Feuil1" et "liste"

Si ton fichier ne correspond pas , il est normal que cela ne fonctionne pas. L'instruction doit être celle-ci :

With ThisWorkbook.Sheets("nom de ta feuille")

Nom de ta feuille étant le nom exact de l'onglet bien entendu

A te relire

Bonjour Dan,

bonjour à tous sur le forum.

Quand j'ai une problème en tête, il y reste jusqu'à ce que j'ai réussi à le résoudre, aussi, en partant du travail, dans la voiture et dans les embouteillages Parisiens, j'ai eu le temps de penser à mon problème, et la solution m'est venue d'un coup, exactement celle que tu me donnes suite à mon interrogation.

Ce matin aussi sec je me précipite sur mon ordinateur pour saisir la bonne donnée, et je me rends compte qu'en fait je n'ai pas introduit ton code sur le bon fichier.

Qu'à cela ne tienne, je rectifie le tire aussi sec, et miracle : ÇA MARCHE !! mais en partie.

En fait, le transfert se fait bien, mais :

  • le transfert s'effectue de la colonne A à O alors que le tableau de base contient plus de colonne de A à AN
  • lorsque des mois se trouve répétés, ainsi que des dates, une fenêtre s'ouvre pour me dire qu'ils sont déjà utilisés, en sachant que sur certains transferts, je peux avoir jusqu'à 100 lignes avec le même mois, je ne peux donc rester le doigt sur la touche "enter" jusqu'à ce que le transfert soit fini.
  • en bas de page, j'ai des calculs mensuels qui s'effectuent, au transfert, ils sont écrasés, serait-il possible de paramétrer de même une insertion de ligne à chaque ligne transférées ? Si non, ça n'est pas grave, je transfèrerais moi-même ces calculs sur un autre espace.

En gros voilà essentiellement les problèmes rencontrés.

Question :

lorsque d'un jour à l'autre j'effectue ce transfert, ce nouveau transfert écrase le précédant je suppose ?

Merci encore pour ces tuyaux, là je touche des fonctions d'excel que je ne connais pas du tout, dans ton code je suis bien incapable de dire pourquoi tu mets tel terme plutôt qu'un autre. J'ai beaucoup avancé sur excel, mais j'ai encore bien plus à apprendre que ce que je n'ai déjà en main.

Mais c'est un défi que j'aime, j'aime la logique que l'on retrouve dans excel, et surtout ses capacités à produire des fichiers de haute qualité.

Bonne journée à tous, j'espère sous un peu de soleil, où que vous soyez.

re,

le transfert s'effectue de la colonne A à O alors que le tableau de base contient plus de colonne de A à AN

Comment puis je le savoir au vu des deux fichiers que tu as mis dans ce fil....

Dans le code à .Range("A" & cel.Row & ":O" & cel.Row).Copy il faut changer "O" par "AN"

lorsque des mois se trouve répétés, ainsi que des dates, une fenêtre s'ouvre pour me dire qu'ils sont déjà utilisés,

Ce n'est pas un pb dû au code.

en bas de page, j'ai des calculs mensuels qui s'effectuent, au transfert, ils sont écrasés,

Idem point 1, tes fichiers ne comportent pas de données de calcul. On revient toujours au souci des demandes sur le forum. Sans le fichier correct, si code VBA il y a, il faut connaitre la configuration exacte des feuilles.

A bientôt

effectivement,

je suis désolée pour les fichiers envoyés qui ne sont pas complets par rapport au fichier initial,

Les problèmes que je te présente ne sont pas à considérer en tant que "critique", bien loin de là, je ne me permettrais pas ce genre d'intervention,

c'est un complément d'information rapport à ce que j'ai exposé au préalable,

des choses auxquelles moi-même je ne pouvais penser du fait que je ne savais pas comment on pouvait générer en pratique une manipulation pour ce que je cherchais.

Pour simplifier la chose : MEA CULPA je tenterai une prochaine fois de penser à tout, voilà tout.

Pour ce qui est de la correction a effectuer pour la globalité des colonnes :

.Range("A" & cel.Row & ":O" & cel.Row).Copy _ mettre AN à la place de O

j'y avais bien pensé, mais je croyais qu'il s'agissait d'un 0 (zéro) donc je n'ai pas osé y toucher, j'aurais du, cela m'aurait éviter de t'ennuyer pour rien.

Pour ce qui est de l'avis de répétition sur les Mois, Date et Succursales, sur la base d'un transfert des colonnes de A à O, je ne sais pas ce qui peut généré ce problème.

Je vais rentrer tes données sur les fichiers tels que je les ai envoyés sur le forum au début de mon post, et je reviens vous dire si le problème est identique.

J'espère que mes interrogations ne me serviront pas à moi seule, je tente toujours d'être toujours très explicite pour que tout autre puisse s'y retrouver pour le cas où l'aboutissement d'une fonction l'intéresserait.

Merci encore et 1000 excuses en parallèle.

-- Jeu Sep 09, 2010 2:48 pm --

Voilà, j'ai fait la correction rapport aux colonne, c'est OK

J'ai tenté de comprendre pourquoi ces fenêtres qui s'ouvrent à chaque fois qu'il y a une répétition.

Effectivement tu ne pouvais savoir, ni comprendre, je n'ai pas généré mes fichiers à partir de mon fichier de base.

En conclusion, j'ai COMPRIS, ça m'arrive aussi hé hé.

Dans mon fichier de base, en "insertion" "nom", j'ai un grand nombre de données pour faire fonctionner l'ensemble de mon tableau, un coup de gomme et tout va très bien, ÇA FONCTIONNE du tonnerre de dieu, si je puis dire.

Encore un grand, pardon UN GRAND merci pour cette aide non négligeable, parce que sans toi, Dan, je ne pouvais y arriver.

Merci aussi à Amadéus, qui a tenté de me présenter une autre manière de faire, mais que je n'ai pas réussi à mettre en application.

Rechercher des sujets similaires à "transfert liaisons"