Macro pour ramener éléments d'un fichier selon conditions

Résolu/Fermé
Playa2 - 31 janv. 2013 à 09:23
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 - 15 févr. 2013 à 20:55
Bonjour,

Je recherche une solution (macro) afin de ramener différants éléments d'n fichier source (actualisé quatidiennement) vers un autre fichier selon plusieures conditions.

Afin d'être plus claire, je joins les deux fichiers (source et destination) ci-dessous.

Les besoins sont les suivants :

1/si n° COMPTE de DESTINATION existe dans SOURCE et libellé GN = Matière ou autres charges externes ramener "résultat cumulé" dans colonne 1

2/si n° COMPTE de DESTINATION existe dans SOURCE et libellé GN =tous les autres, ramener "résultat cumulé" dans colonne 2

3/si n° COMPTE de TAB n'existe pas dans SOURCE => insérer ligne dans TBD est ramener N°compte et résultas cumulés dans colonne correspondante

http://cjoint.com/?3AFjt2mBF2Z
http://cjoint.com/?3AFjuC3q4ny

J'ai bien tenté les recherchev mais popur les conditions si ça se complique !!!

D'avance merci à ceux qui voudront bien s'intéresser à mon problème ; je me tire les cheveux depuis deux jours et ne trouve pas la solution...
A voir également:

56 réponses

Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
8 févr. 2013 à 10:34
Bonjour,
Merci.
J'aimerais pour commencer régler le problème de l'enregistrement du cas 3.
Pouvez-vous réaliser ceci :
Ouvrir le fichier source [Playa2_ccm_source_ep_05022013.xls] / Activer l'enregistreur de macro (icône en bas à gauche) / clic droit sur la feuille [Feuil1] et choisir [Déplacer ou copier...] / dans classeur choisir (nouveau classeur) et cocher la case [Créer une copie) puis sur OK / vous avez un nouveau classeur vous faite [enregistrer sous] par exemple sur le bureau et vous donnez un nom / clic enregistrer. Pour terminer vous fermer l'enregistreur de macro.
Vous mettez le classeur [Playa2_ccm_source_ep_05022013.xls] sur https://www.cjoint.com/ et poster le lien.
Note : je vous expliquerez l'autre problème après .... !

0
Hello,

je suis désolée mais je ne trouve pas l'enregistreur de macro (icône en bas à gauche) !!!

J'ai tenté dans la barre d'outil visual basic mais sans succès...

HELP HELP
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
8 févr. 2013 à 11:24
Bonjour,
J'ai pensé que sous Excel 2002 il y avait aussi l'icône, alors vous procédez comme pour la : Macro enregistrée le 04/02/2013 par RATP .... !

0
Vous allez me prendre pour un boulet mais pouvez-vous me dire ce que vous voulez exactement ?

D'après ce que je comprends, vous attendez votre fichier sourcePlaya2_ccm_source_ep_05022013.xls sous le nom que je compte utiliser.

Est-ce bien cela ???
0

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

Posez votre question
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
8 févr. 2013 à 13:58
Bonjour,
Dans le but d'obtenir le code généré par votre version Excel 2002 , j'aimerais que vous enregistrer une nouvelle macro avec l'enregistreur selon les opérations que j'ai mentionné.
Le procéder est le même que pour la macro que pour celle que vous avez dans le poste : https://forums.commentcamarche.net/forum/affich-27033919-macro-pour-ramener-elements-d-un-fichier-selon-conditions#3
Ensuite vous mettez le classeur [Playa2_ccm_source_ep_05022013.xls] sur https://www.cjoint.com/ et poster le lien.

0
Voilà,

J'espère que c'est bien ce que vous attendiez :

http://cjoint.com/?3BiotUsagVc

Cdlt.
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
8 févr. 2013 à 14:48
Bonjour,
Non ce n'est pas cela, de ce fait je me demande d'où sort la macro que vous avez présenté là : https://forums.commentcamarche.net/forum/affich-27033919-macro-pour-ramener-elements-d-un-fichier-selon-conditions#3

Eh bien je vous propose d'essayer avec la version suivante : https://www.cjoint.com/?3BioVhQF46H

0
Merci pour la proposition, toujours ok pour cas 1 et 2 mais problème pour le cas 3 => Erreur d'exe "13" et la ligne surlignée est la suivante :
If CInt(Application.Version) < 12 Then

Par ailleurs, je vous joins le fichier avec ma macro modifiée entre-temps sans le cumul des matières et autres charges bien entendu (clic sur rectangle jaune).
http://cjoint.com/?3BipJGYuP00
http://cjoint.com/?3BipQFlfZoX

De plus la demande a changée, les lignes à copier-coller dans un nouveau fichier sont celles du fichier destination pour lesquelles les colonnes 1 et 2 (surlignées jaune) sont vides...

Désolée, je viens juste d'avoir l'info,

Encore un grand merci pour votre aide
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
8 févr. 2013 à 15:59
Bonjour,
Le premier lien n'est pas correct ... cela devient très interressant...!
Salutations.
Le Pingou
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
Modifié par Le Pingou le 8/02/2013 à 15:52
Bonjour,
Maintenant je veux savoir exactement la valeur qui se trouve dans le code [Application.Version], pour se faire, vous lancer la procédure et dès l'apparition du message vous cliquez sur débogage, sélectionner (Application.Version) et il devrait apparaitre une valeur.... Que vous me transmettez... j'attends... !
Je veux aussi la réponse à ceci : Non ce n'est pas cela, de ce fait je me demande d'où sort la macro que vous avez présenté là : https://forums.commentcamarche.net/forum/affich-27033919-macro-pour-ramener-elements-d-un-fichier-selon-conditions#3


Salutations.
Le Pingou
0
La valeur est "10.0".

La macro postée plus haut dont vous parlez a été remplacée par celle que je vous est postée à l'instant. Elle n'existe donc plus.

Cordialement.
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
Modifié par Le Pingou le 8/02/2013 à 16:22
Bonjour,
Merci, pour le « 10.0 » c'est OK par contre qu'elle valeur pour [CInt(Application.Version)] ... !
D'où sort la macro veut dire : qui la réaliser car visiblement vous ne s'avez pas ou se trouve l'enregistreur de macro sur excel 2002 ..... !
Salutations.
Le Pingou
0
Voilà le bon lien :
http://cjoint.com/?3BiqgektOF2

Pardon
0
Quand je clic sur[CInt(Application.Version)] :
j'ai le message suivant : Cint(ApplicationVersion) = <Incompatibilité de type> mais pas de valeur.

Quant-à la macro, c'est bien moi qui l'est créee en allant dans outil,macro, nouvelle macro...
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
8 févr. 2013 à 16:56
Bonjour,
Quand je clic sur[CInt(Application.Version)] :

j'ai le message suivant : Cint(ApplicationVersion) = <Incompatibilité de type> mais pas de valeur
.

Je pense que c'est dû à la version 2002 qui ne prend pas en charge la fonction [CInt], comme je veux que cela fonctionne je vais chercher l'équivalent.

0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
Modifié par Le Pingou le 8/02/2013 à 17:05
Bonjour,
Merci d'essayer en remplacant le [CInt(Application.Version)] par [Val(Application.Version)]


Salutations.
Le Pingou
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
8 févr. 2013 à 22:53
Bonjour,
Je suppose que la procédure fonctionne avec le remplacement de [CInt] par [Val] en conséquence ma proposition selon votre modification pour le cas 3.
Les 2 classeurs en ZIP : https://www.cjoint.com/?3Biw1ndcxaO

0
Bonjour Le Pingou,

Cette fois la macro fonctionne très bien jusqu'au point 3; merci beaucoup !!!

Cependant, lorsque je l'applique à mon fichier, j'ai toujours le même problème sur le point 1 : erreur d'exe "9" : l'indice n'appartient pas à la sélection.
Et surligne : Set wbdes = Workbooks(desti)

Savez-vous comment je dois écrire "résultats destination" et "source ep" ???

D'avance merci.
0
En fait, j'ai solutionné le problème précédent (il suffisait de mettre des guillemets).

Par contre je recontre le nouveau problème suivant sur le point 3 : erreur d'exe "1004" : l'indice portant ce nom est introuvable et la ligne surlignéé : ActiveSheet.Shapes.Range(Array("CmdeTrait")).Delete

Avez-vous la soluttion ???

D'avance merci.
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
11 févr. 2013 à 10:52
Bonjour,
Je pense que vous utilisez un autre bouton de commande pour déclencher la procédure, dans ce cas il faut remplacer [CmdeTrait] par le nom de votre bouton... !
Salutations.
Le Pingou
0
Hello,

J'ai copier-coller votre macro que j'ai renommée Macro4. J'ai créer un nouveau bouton auquel j'ai affecté "Macro4" ai modifié la macro de cette façon : ActiveSheet.Shapes.Range(Array("macro4")).Delete et ai cliqué sur mon bouton.

Malheureusment, j'obtiens toujours le message d'erreur erreur d'exe "1004" : l'indice portant ce nom est introuvable et la ligne surlignéé : ActiveSheet.Shapes.Range(Array("Macro4")).Delete

Ai-je bien compris votre précédent message ???

Par ailleurs, le nouveau fichier créer pour ramener les lignes comporte toutes les lignes du fichier destination et non pas uniquement celles vides en colonne 1 et 2 comme recherché !!! Comment puis-je modifier cela ???

D'avance merci.
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
11 févr. 2013 à 16:06
Bonjour,
Eh bien, le nom de votre bouton n'est pas celui de la macro, ce sont 2 objets différents. Chercher le nom attribué à votre bouton ....... Vous sélectionnez le bouton et le nom devrait se trouver dans la fenêtre à gauche de la barre des tâches ...!

Pour le nouveau fichier créé : je viens de contrôler et il y a uniquement les lignes dont les valeurs sont vides pour les colonnes 1 et2.

0
J'ai suivi vos instructions (clic droit sur mon bouton) et en haut à gauche (nom de cellule) est indiqué Groupe 24, j'ai donc fait un copier-coller de ce nom et ai modifié la macro :
ActiveSheet.Shapes.Range(Array("Groupe 24")).Delete

Cependant, je reçois toujours le même message d'erreur !!!

Par ailleurs, j'ai vérifié et pour le cas 3 c'est ok, désolée !!!

Tous est donc parfait à part le petit soucis dit plus haut...
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
11 févr. 2013 à 17:55
Bonjour,
Si je ne fais pas d'erreur, le [Groupe 24] est un ensemble de plusieurs objets que vous avez groupé, donc dans ce cas il faut traiter l'ensemble et la ligne d'instruction ne convient pas, il faut là modifier selon vos objets.
Vous pouvez aussi supprimer la ligne [ActiveSheet.Shapes.Range(Array("CmdeTrait")).Delete] ce qui aura pour effet de garder le bouton de commande dans le nouveau classeur avec une liaison vers la procédure qui se trouve dans un autre classeur.... !
Note: J'ai vu votre dernier message et si vous modifier le code je n'ai aucune chance de vous aider sans avoir la procédure compolète.
Salutations.
Le Pingou
0