Ajout d'un bouton pour récupérer données d'un fichier externe

Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention   -  
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je fais appel à votre amabilité et connaissance éventuelle en VBA pour m'aider à ajouter un bouton à ma macro.

A la base j'ai 3 fichiers :
  • Un premier nommé « cadencier » contenant tous mes articles reconnu par un code IFLS colonne J
  • Une macro « Macro alim cadencier » qui permet de récupérer des fichiers sur mon disque dur et d'alimenter la colonne Ventes du cadencier aves les boutons
  • Le fichier contenant les données qui vont être intégré dans le cadencier grâce à la macro : « fichier_pour_alim_ventes »


Je souhaiterai ajouter un bouton dans ma macro du même type que le deuxième « indiquer le fichier stocks » `qui alimente la colonne Ventes de mon fichier cadencier à partir de Qté Unités colonne L du fichier »SUM( [FLDC-Qté unites] ) »). Cette fois-ci je veux aller chercher un fichier Commandes prendre la colonne U « Arr. Intégrées » du fichier «fichier_alim_CMD »(dossier test macro) et la coller dans le fichier nommé Cadencier à la colonne CMD.

J'ai tout d'abord dans excel recopié la partie pour aller chercher le fichier créer le bouton et je l'ai affecté à une nouvelle macro « Sub CommandButton3_Click() »

Ensuite dans le code j'ai cherché à peu près tout le code ou y avait stock dedans et je l'ai recopié pour « commandes » en changeant le nom de toutes les variables...

PS: quand on appuie sur le bouton mettre a jour le cadencier ça marche ça alimente la colonne ventes. Mais mon bouton CMD ne marche pas... par contre avant d'appuyer sur mettre a jour faut qu'il y ait que la macro d'ouverte sur le pc.

Le dossier ci-joint contient donc : le cadencier, la macro de base, la macro test (contenant le code que j'ai ajouté qui se trouve entre des commentaires `TEST Bouton & `end test bouton pour pouvoir se repérer facilement ; le fichier pour alimenter les stocks avec le 2ème bouton et celui pour alimenter les commandes (nouveau bouton).
... je n'ai fait que reprendre la méthode de création du bouton 2. Je pense avoir fait le plus gros mais n'ayant que des connaissances très basiques de VBA, je suis incapable de rectifier.

Voici tous les fichiers :
https://www.cjoint.com/c/EDwleLoGB1Z
Merci par avance et bonne journée.
A voir également:

305 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Bonjour,

Est-ce possible ? Oui
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Merci
Comment cela va être possible ?
Actuellement le poids des jours ne dépend pas du numéro d'entrepôt ? il faut donc tout reprendre ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

1/ nommer les plages par entrepot significativement pour pourvoir faire de un seul code pour tous les entrepots

2/ 'Fonction qui calcule la prévision
Function Calcul_Prevision(


c'est la qu'il faut faire les modifs et passer le numero de depot a cette fonction dans la procedure
Sub MaJ_Cadencier_Prevision(MFM As Worksheet)


c'est tout cd que je vois pour l'instant
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,
Pour le nommage des plages, prenez les noms des plages du fichier

macro_ab_lens_0405.xlsm, onglet parametre et vous ajoutez la numero d'entrepot ex: Poids devient Poids_723, Poids_523,Poids_374,Poids_553
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Actuellement, dans le code je vois que 5 plages sont nommées : Poids ; Jours ; Poids_jours ; Poids_jours_feries ; Jours_feries
Pour chaque entrepot faut il 5 plages ??
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Oui, si vous voulez conserver le code intact, sauf l'ajout du numero de depot
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Est-il nécessaire d'avoir 4 plages Jours et jours_feries également ? Ce sont les plages contenant les numéro de jour.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

C'est vous qui voyez, il est vrai que pour l'instant ce sont les memes plages, mais ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Voici la macro avec les plages nommées : https://www.cjoint.com/c/EEnpUVvJkP5
Logiquement les plages Jours et Jours_feries sont les mêmes pour tous les tableaux...
Je ne vois pas ce qu'il faut modifier dans la fonction calcul prevision ni dans Sub_Maj_Cadencier ??
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

Je ne vois pas ce qu'il faut modifier dans la fonction calcul prevision ni dans Sub_Maj_Cadencier ?? Ah Bon!!!!!
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Dans Mod_MAJ :

If Jour_Ferie = True Then
Poids = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours_feries"), Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours_feries"), 0), Application.WorksheetFunction.Match("Poids", MFMP.Range("Poids_ferie"), 0))
'Poids = 2
Else
Poids = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours"), Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours"), 0), Application.WorksheetFunction.Match("Poids", MFMP.Range("Poids"), 0))
'Poids = 3
End If

Puis

Sub test()
Jour = Weekday(Date) ...

Un if par entrepot ??
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,
Un if par entrepot ?? Vous plaisantez j'espere ???
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
je ne vois pas sinon ????
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

je ne vois pas sinon ????

lignes modifiees:
Sub MaJ_Cadencier_Prevision(MFM As Worksheet)
    Dim SDepot As String

                SDepot = CStr(Depot)
                Prevision = Calcul_Prevision(MFMP, MFC, Ligne_Ref, Col_Prev + (IPNCJ), Jour_Ferie, Nombre_Colonne_Jour, Somme_Ref, SDepot) '[V6]

'------------------------------
'
Fonction qui calcule la prévision
Function Calcul_Prevision(MFMP As Worksheet, MFC As Worksheet, Ligne_Ref As Long, Colonne_Ref As Long, _
                                            Jour_Ferie As Boolean, Nombre_Colonne_Jour As Integer, Somme_Ref As Integer, Depot As String)

If Jour_Ferie = True Then
    Poids = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours_feries_" & Depot), Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours_feries"), 0), Application.WorksheetFunction.Match("Poids_" & Depot, MFMP.Range("Poids_ferie_" & Depot), 0))
Else
    Poids = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours_" & Depot), Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours"), 0), Application.WorksheetFunction.Match("Poids" & Depot, MFMP.Range("Poids_" & Depot), 0))
End If
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
merci

j'ai changé les lignes modifiées mais j'ai une erreur de compliation.
voici mon fichier : https://www.cjoint.com/c/EEnsu54Zqzc

est-ce que ça marche de votre côté.

Je ne comprends pas vous déclarez une nouvelle variable seulement ?? on n'indique pas les numéro d'entrepot dans le code ? ni chacune des plages ??
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Bonjour,
j'ai une erreur de compliation.
Faites TOUTES LES MODIFS
il y a une erreur, un Depot en trop ici:
WorksheetFunction.Match("Poids" & Depot, MFMP.Range("Poids_" & Depot), 0)

mais ce n'est pas dans ce que vous avez mis a dispo puisque modifs pas faites
code de remplacement
If Jour_Ferie = True Then
    Poids = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours_feries_" & Depot), _
                Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours_feries"), 0), _
                Application.WorksheetFunction.Match("Poids", MFMP.Range("Poids_ferie_" & Depot), 0))
Else
    Poids = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours_" & Depot), _
                Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours"), 0), _
                Application.WorksheetFunction.Match("Poids", MFMP.Range("Poids_" & Depot), 0))
End If


on n'indique pas les numéro d'entrepot dans le code ? ni chacune des plages ?? Faites les modifs et lisez le code vous comprendrez (peut-etre)
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Très bien je vais voir merci
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

J'ai bien modifié le code demandé. Par contre il y'a une erreur : variable non reconnue ? pourtant elle est bin déclarée :
Dim Depot As String 'Integer


voici mon fichier : https://www.cjoint.com/c/EEpjKGgnD4I
merci
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

J'ai repris mon ancienne macro et refait les dernières modif que vous avez indiqués. Le bouton « mettre à jour les entrées » semble OK mais celui des stocks et sorties : erreur 400...
Pouvez-voir svp ? voici le fichier : https://www.cjoint.com/c/EEsjFaCHDfk
Merci par avance
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Bonjour,
Function Calcul_Prevision

manque les "_" dans le code pour les noms de plages avec & Depot
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Merci.
Je viens de remettre les « _ » (je pensais que c'était une erreur de frappe). A quoi servent -ils ?
Par contre j'ai enlevé ceux devant « _ Application.WorksheetFunction.Match(Jou » car il y'a erreur de caractère.
Toujours erreur 400 en ayant rajouté les « _ » pour les noms de plages comme dans votre code.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

A quoi servent -ils ? regardez le nom des plages par depot et vous comprendrez

Par contre j'ai enlevé ceux devant « _ Vous le faites expres ou ......
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Les _ devant application posent problèmes !! j'ai erreur de code ...
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

reprenez ce code:

If Jour_Ferie = True Then
    Poids = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours_feries_" & Depot), _
                Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours_feries"), 0), _
                Application.WorksheetFunction.Match("Poids", MFMP.Range("Poids_ferie_" & Depot), 0))
Else
    Poids = Application.WorksheetFunction.Index(MFMP.Range("Poids_jours_" & Depot), _
                Application.WorksheetFunction.Match(Jour, MFMP.Range("Jours"), 0), _
                Application.WorksheetFunction.Match("Poids", MFMP.Range("Poids_" & Depot), 0))
End If
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Merci.

mais j'ai toujours l'erreur. Je vous mets le fichier à dispo pcq je ne sais plius comment expliquer...

https://www.cjoint.com/c/EEsm0ae2mKj
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

"_" en trop.

fichier: https://www.cjoint.com/c/EEsoC1Es12r
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Merci !
Mais j'ai toujours l'erreur 400 pour els stocks et sorties. pas vous ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

Avec votre dernier fichier modifie ("_") et les autres fichiers a ma dispo, tout baigne
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à vous.

J'ai une petite demande assez basique je pense. Je voudrai dans le fichier cadencier ajouter 2 boutons "ouverture" et "fermeture". Le bouton ouverture permet d'effacer le filtre souvent présent dans la colonne "actif" et "analyse" et d'ouvrir les croix qui sont au dessus des colonnes A B... et fermeture de refermer les croix..

merci
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Les boutons peuvent être juste au dessus des colonnes B C D... par exemple..
est-ce possible? est-ce que ça ne va pas gêner l'exécution de l'autre macro ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Colonnes C et D masquees dans fichier a ma dispo !!!!!!
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Oui pardon !! jplutôt colonnes H, I ...
Par contre le bouton fermeture il faudrait qu'il ne ferme que les groupés et remette le filtre ligne 4 (car tout le monde n'utilise pas le cadencier de la même façon)..

merci
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

degroupage total des colonnes et effacement filtre (pas suppression) et groupement total colonnes:

code des boutons (peux pas joindre le fichier: probleme ci-joint)

enregistrez le fichier en .xlsm:
Private Sub Cmd_Fermeture_Click()
    'groupe colonnes
    ActiveSheet.Outline.ShowLevels RowLevels:=0, columnlevels:=1
End Sub

Private Sub Cmd_Ouverture_Click()
    On Error Resume Next
    'enleve filtre
    ShowAllData
    'degroupe colonnes
    ActiveSheet.Outline.ShowLevels RowLevels:=0, columnlevels:=3
End Sub


faudrait qu'il ne ferme que les groupés Je regarde si faisable

A+
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Vous n'arrivez pas à accéder au site cjoint ?
Ou dois-je entrer le code ? car le fichier cadencier ne contient pas de macro... ?
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Voici mon cadencier avec les 2 boutons :https://www.cjoint.com/c/EEtsUE0M8uh
je ne sais pas si vous avez réussi à mieux les positionner que ce soit plus ergonomique. ?
les bouton ouverture tourne mais il ne m'ouvre que les filtres et pas les groupés (tout en haut du cadencier au dessus des 1ères colonnes)
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

je peux recuperer un fichier, mais pas en envoyer

mais il ne m'ouvre que les filtres Faites attention a ce que vous faites, la ligne de code pour effacer les filtres est en bout du commentaire de showallData

regardez ici: f894009 - 19 mai 2015 à 17:45

J'ai trouve pour mettre mes plus et moins (groupes colonnes), un bon bout de code
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
merci je viens de voitr que je l'avais mis en commentaire
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

J'ai trouve pour mettre mes plus et moins (groupes colonnes), un bon bout de code

déjà inclus dans le code que vous m'avez transmis ?

merci
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour
J'ai un grand problème. Je n'arrive pas à créer de bouton. Aparavant j'avais simplement copier celui de a macro et j'ai l'impression que le code se mélange.
Voici un cadencier pour lequel j'ai voulu créer un bouton et code propres. Mais le bouton ne marche pas. Pouvez vous svp m'indiquer les étapes ? merci beaucoup

https://www.cjoint.com/c/EEvluVWzNvi
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Bonjour,

Pas mettre le bouton sur des colonnes qui peuvent etre masquees
https://www.cjoint.com/c/EEvmmktndbG

Avez-vous toujours besoin du regroupement colonnes a l'origine sur clic bouton fermeture ou fermeture fichier ????
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Merci mais je viens d'ouvrir le dossier. Je ne vois aucun fichier excel ?

Oui toujours svp.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

clic droit sur le lien et enregistrer la cible du lien sous.....

Oui toujours svp. Ok, je fais
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
? j'ai des dossiers _rels; docProps.. avec des .xml à l'intérieur.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714 > Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Petit soucis avec ci-joint.com, autre methode: https://www.cjoint.com/c/EEvphb7jQNZ
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
Merci !!!
avez vous réussi pour les colonnes comme elles étaient à l'origine ?

Si oui pouvezvous me faire les modif sur ce fichier dernière version SVP : https://www.cjoint.com/c/EEvppoIxgzf car je n'arrive jamais à refaire ce que vous faites. J'ai une erreur de compilation à chaque fois au niveau de show all data

les boutons peuvent etre à partir de colonne I car en général le premier groupe esr toujours fermé.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

car je n'arrive jamais à refaire ce que vous faites Le copier/coller ca marche pas mal

avez vous réussi pour les colonnes comme.... Pas encore commence le code, car ma premiere idee ne cadrait pas avec les niveaux de groupe, donc j'ai revu comment faire. Mais maintenant ma premiere idee pourrait aller puisque vous avez un seul niveau de groupe !!!!!! C'est pas la meme chose pour tus les fichier cadencier ????????????????????????????????
0
Kivanc Messages postés 390 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai ajouté : ActiveSheet.ShowAllData et mon premierbouton marche maintenant... savez vous pourquoi ?

oui ce sont les même cadencier . un seul niveaiu de groupe ? cad ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 714
 
Re,

J'ai ajouté : ActiveSheet.ShowAllData si le code est dans le VBA de la feuille, pas besoin de activeSeet !!!!

un seul niveaiu de groupe ? cad ? cadencier_christophe et nicolas, pas les memes niveaux de regoupement des colonnes, 2 dans le premier et 1 dans le deuxieme
0