Problème MFC + créer macro suppression
Bonsoir,
Je travaille actuellement sur une Base de données sur Excel 2010. Depuis peu, je m'intéresse fortement aux usages possibles d'Excel afin de gagner en lisibilité, en traitement,...
Jusqu'à présent, j'ai su me débrouiller "seul" grâce aux divers forums et cours disponible sur internet. Au passage excel-pratique m'a énormément apporté, je remercie donc la communauté de ce site et du forum.
J'ai mis en place des MFC pour mettre en page mon tableau.
1/ Toutefois, je bloque sur une MFC "simple":
Je souhaite coloriser en alternance les lignes du tableau selon les valeurs de la colonne A, dès qu'il détecte un changement du texte dans les cellules.
Remarque: J'ai mis en place un "bouton" pour afficher afficher les doublons ou non sur certaines colonnes.
Le contenu des cellules est ainsi masqué par le format associé ;;;.
En essayant, il me colorise seulement la dernière ligne lorsque plusieurs lignes comporte dans la colonne A le même texte.
J'ai employé la formule =$A2<>DECALER($A2;1;0) ou des variantes.
En attendant d'obtenir une réponse, j'ai appliqué cette même formule mais pour ajouter un format "bordure" afin de regrouper les lignes dont les valeurs en A sont identiques.
2/ J'aimerais par la suite, pour simplifier le tableau et dans une autre feuille (pour une exploitation des données différentes, en SIG), ne garder que des lignes uniques (la dernière), unicité des valeurs en B. Je veux donc qu'il me supprime les autres lignes.
J'ai lu que cela se faisait par macro, or, à l'heure actuel je suis incapable d'en faire une ou d'en adapter d'autres à mon cas qui sont susceptibles de répondre à ma demande.
Je me forme sur ce point actuellement.
Je vous remercie par avance
Je suis ouvert à toutes explications permettant d'appréhender la logique, de cerner les erreurs et aux conseils méthodologiques pour ce type de travail.
Par exemple, améliorations et/ou regroupement des MFC que j'ai faite, etc.
Voici le fichier "nettoyé" de certaines colonnes:
Personne pour une suggestion ?
Aucune manifestation !? Quel est le problème avec mon topic ?
Explications trop vagues ? longues ? Demandes peu compréhensibles ? etc. ?
J'ai une autre question, j'ai réussi à trouver une formule qui répond à ma demande (partiellement):
Voici le lien du sujet: https://forum.excel-pratique.com/excel/extraction-sans-doublons-avec-formule-t35573.html
Les deux formules sont respectivement:
1)
=SIERREUR(INDEX(D$6:D$35;EQUIV(PETITE.VALEUR(SI(Col_Intermed=1;NB.SI(D$6:D$35;"<"&D$6:D$35));LIGNES($6:6));NB.SI(D$6:D$35;"<"&D$6:D$35);0));"")
J'ai adapté à mon tableau et cela fonctione.
2)
=SIERREUR(INDEX(E$6:E$35;PETITE.VALEUR(SI((Col_Intermed=1)*(D$6:D$35=I6);LIGNE(INDIRECT("1:"&LIGNES(Col_Intermed))));NB.SI(I$6:I6;I6)));"")
Le problème c'est que pour mon tableau, 1518 lignes, cela est très long...
Et la procédure est tellement longue et/ou demande beaucoup de ressources, il m'est impossible de lancer la deuxième formule 2). Sachant que cette même formule je devrais l'appliquer à d'autres colonnes.
Car je souhaite faire une somme pour chaque valeur du nombre de logements correspondants à un numéro de dossier de la colonne Num_dossier. Or un dossier contient plusieurs lignes et cette valeur est renseigné à chaque ligne. Je veux donc qu'il m'utilise la valeur correspondante à chaque dossier une seule fois.
Si j'applique une formule qui gère les occurences mais que, par exemple, 1 apparaît plusieurs fois et pour des numéros différents, il me le comptera une seule fois.
Le problème est que maintenant mon fichier excel est très long, à chaque ouverture, il lance une procédure de calcul longue.
J'ai essayé un copier les données dans un autre classeur mais rien n'y fait quand j'en viens au tableau utilisant ces formules.
Comment stopper ce calcul sachant que les résultats sont affichés ?
Est-il possible d'obtenir une macro ?
Bonjour,
Tu es sûr que c'est colonne B ?
Ton encadrement a plutôt l'air de prendre en compte A...
De plus tu dis que c'est lent et tu voudrais que ce soit fait à chaque modif. Ca serait plus raisonnable de le faire sur demande, par exemple rafraichir à l'activation de la feuille.
eric
Oui, colonne A.
J'ai fait tune édition.
La lenteur ne vient pas du premier tableau que j'ai joint. C'est, une fois que j'applique les formules que j'ai mises dans mon dernier message. Je n'ai pas remis un tableau à jour avec ces formules.
En attendant, je travaille en calcul manuel, et je patiente dès que je dois faire le traitement.
Voilà pour la partie 1.
Regarde si le lag te parait supportable au moment des saisies. Moi j'imagine mieux une mise à jour des couleurs sur demande, un double-clic sur A1 par exemple
eric
Merci !
Votre proposition pour le premier point est parfaite !
J'ai plus qu'à m'imprégner du code pour l'employer dans d'autres situations similaires.
Le "lag" vient de l'utilisation de ces formules:
1)
=SIERREUR(INDEX(D$6:D$35;EQUIV(PETITE.VALEUR(SI(Col_Intermed=1;NB.SI(D$6:D$35;"<"&D$6:D$35));LIGNES($6:6));NB.SI(D$6:D$35;"<"&D$6:D$35);0));"")
Celle-ci permet d'extraire les valeurs sans les doublons
Remarque: Cette fomrule là je peux m'en affranchir via une macro trouvée, simple que j'ai su adapter.
2)
=SIERREUR(INDEX(E$6:E$35;PETITE.VALEUR(SI((Col_Intermed=1)*(D$6:D$35=I6);LIGNE(INDIRECT("1:"&LIGNES(Col_Intermed))));NB.SI(I$6:I6;I6)));"")
Cette formule répond également à ma demande, elle permet de récupérer la valeur correspondante d'une colonne pour un numéro de dossier. Si à chaque ligne, lorsqu'il y en a plusieurs, les valeurs sont écrites plusieurs fois. Cette formule me l'extrait 1 fois et me l'affiche.
Le problème c'est que c'est très long lors du traitement et ce pour 1 colonne, or je souhaite faire cela pour d'autres colonnes.
Voici ci-joint, le classeur mis à jour pour une meilleure compréhension:
Bonjour,
Si tu pouvais faire un fichier sans tes formules qui empêches de travailler puisque de toute façon, si j'ai bien compris, tu n'en veux plus.
Et en profiter pour mettre un exemple exact du résultat attendu.
Un coup tu dis dans une autre feuille, après tu n'en parles plus. Tu parles d'autres colonnes sans plus de précision...
Tout cela est très vague. VBA (et moi non plus d'ailleurs) ne supporte pas l'imprécision.
eric
edit :
et pourquoi récupérer la dernière ligne alors qu'elles sont toutes identiques ?
Si des colonnes d'un num_dossier peut avoir des valeurs différentes il faut que ça apparaisse. Si tu mets 94 sur les 3 lignes alors qu'en réalité c'est différent, ça trompe et empêche une bonne compréhension.
Si la dernière ligne est un total il faut le préciser.
Merci de mettre un fichier correct, 5-10 num_dossiers représentant les différents cas possibles est suffisant.
Je vous remets un fichier propre demain
En fait je parlais effectivement d'une autre feuille, mais en faisant des essais, j'ai tout mis sur la même feuille car c'était encore plus long de faire cela sur une autre feuille, en appliquant ces fameuses formules...
Cette autre feuille sert pour une exploitation pour un autre groupe de travail. Le tableau avec tout les doublons ne pose pas de problème pour une "jointure" dans un traitement SIG.
Mais je souhaite faire un tableau lisible, synthétique, plus compréhensible pour des personnes qui n'ont pas travaillé sur cette base de données.
De plus, je souhaite à partir de ce travail, m'initier et aller plus loin avec excel pour découvrir des outils, des méthodes de travail plus efficace à l'avenir. Tout simplement, ça me plaît !
En fait, chose que je n'avais pas précisée, la présence des "doublons" viens d'une colonne (que je ne fais pas apparaître pour joindre le fichier sur le forum). En fait si pour un dossier, ce dernier comporte "x" informations différentes dans cette colonne, j'ai généré autant de lignes.
Et j'ai fait l'erreur de dupliquer les informations des autres colonnes qui sont uniques à chaque ligne, or cela me pose problème pour faire une simple somme pour le nombre de logements. Ne tenir compte qu'une fois de la valeur mentionnée à chaque dossier qui peuvent être similaire. Mais ce ne sont pas des doublons, je dois en tenir compte.
Edit Concernant la dernière ligne, cela vient d'informations (autres colonnes supprimées pour transmettre le fichier) que je n'ai rempli que sur cette ligne, la dernière pour chaque dossier.
PS: Désolé que cela soit vague ou que les explications ne furent pas en adéquation avec la demande, du fait des essais
Voici un fichier synthétique (quelques lignes mais illustrant l'ensemble de la base), les colonnes sans précisions sont affichées.
Une feuille avec le résultat attendu est ajoutée:
Merci par avance,
Daedante
J'ai trouvé la solution à mon problème:
Récupérer une seule ligne pour chaque dossier numéroté dans une colonne, en conservant tous les autres champs.
Voici le lien de la macro que j'ai employé
http://boisgontierjacques.free.fr/fichiers/SupDoublonsDict.xls
Remarque: La macro renvoi le résultat dans une autre feuille
Merci à eriiic pour la macro d'alternance de couleur, en fonction du changement de valeurs des champs d'une colonne
Bonjour,
Donc c'est bon. Plus la peine de se pencher sur ton dernier fichier ?
eric