grephit
Messages postés40Date d'inscriptionmercredi 14 mai 2008StatutMembreDernière intervention16 octobre 2012 10 sept. 2011 à 13:25
je m'interesse a vba mais là beaucoup de chose sont encore confus , je vais prendre le temps....
cs_microsig
Messages postés6Date d'inscriptionsamedi 10 novembre 2007StatutMembreDernière intervention14 février 2010 14 févr. 2010 à 21:41
Bonjour
Je suis un débutant en VBA
Voila j’ai un classeur Nome FACTURE Excel(V.2003)
Je suis sur une Feuil C
Je voudrais effacer les contenues de touts les cellules
Non Protéger d’un tableau dans la Feuil A
J’ai utiliser une boucle
Fro i=1 to Sheets.Count
Sheets(i).cells.Clear
Next i
Mais elle ne fonctionne pas
La boucle efface tout la feuil A
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 3 févr. 2010 à 15:06
Merci SEMLALI_OS, mais attends que ce soit complet (déjà fait, mais en cours d'optimisation).
semlali_05
Messages postés9Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention 5 novembre 2012 3 févr. 2010 à 14:10
merci pour ton effort
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 janv. 2010 à 22:47
Ma procédure n'exclut pas la présence d'un Header. S'il est là (parce que voulu) , il l'est (et ma procédure ne s'en trouve pas gênée)... s'il n'est pas là (parce que non estimé utile dans telle ou telle autre appli), il n'est pas là (et ma procédure ne s'en trouve pas plus mal). Je me fiche des démérites ou des mérites d'un header : je n'accepte cependant pas qu'on force à l'utiliser (et une autre fois : quid dans le cas d'une portion de colonne ?)
Si, toi, tu veux rester soumis à cette présence de header, si en plus, lorsque tu utilises la méthode telle qu'elle est pour copier ailleurs et sans doublons, tu te retrouves avec le header dans ta liste de traitement et que cela te plait (y compris de refaire un travail pour exclure le header de ta liste traitée), c'est ton affaire. D'autres, voient différemment et ils sont nombreux.... Microsoft verra bien s'il convient ou non de les satisfaire et dans quelles conditions le faire. J'observe enfin que la version Excel est dotée d'une méthode (que j'ai signalée plus haut) permettant de supprimer les doublons d'une plage. Que c'est curieux, tiens... celle-là, plus longuement réfléchie probablement, n'inclut pas le header, pardi ... Elle traite LA plage concernée et ne dépend pas (logique) de quoi que ce soit d'autre.
Je continue donc allègrement sur ma lancée.... et ce : pour mille et une raisons.
Les multi-colonnes ? c'est maintenant fait sur ma machine (et fera l'objet d'une modif de rien du tout).
La vitesse ? Permets-moi de te faire remarquer que si tu choisis de mettre à False le booléen methode, la seule différence de traitement est l'ajout puis la suppression d'une ligne (et rien d'autre) ! différence de temps d'exécution dans ce cas ? une fraction de seconde.
Un temps légèrement plus long avec methode à True, mais avec la flexibilité que j'ai signalée (relis) dans le vrai respect de ce que veut faire le développeur, sans l'obliger à des acrobaties diverses (voire manuelle) en cas de non satisfaction.
On passe à autre chose ?... (tu as des suggestions d'optimisation du code ?)
cs_amydale
Messages postés16Date d'inscriptionjeudi 3 juin 2004StatutMembreDernière intervention 4 janvier 2012 25 janv. 2010 à 21:59
1) Je conçois qu'on puisse avoir des avis différents sur certaines choses, mais y a vraiment des choses que tu ne veux pas comprendre.
L'utilisation du header est peut-être inutile pour toi, mais elle est très utile pour d'autres, ne serait-ce l'utilisation du CriteriaRange de la fonction AdvancedFilter. Vraiment très très pratique. Idem pour toutes les fonctions BD (BDSomme, BDMoyenne, etc)
Ceci dit, ils auraient peut-être pu y mettre un paramètre qui désactive les critères s'il n'y a pas de titres. Est-ce vraiment un bug ?!
2) On peut trouver toutes les conneries du monde sur google. Tu peux taper "bug an 2000" et tu y trouveras des centaines voire des milliers de réponse. Personnellement, mon pc n'a pas explosé.
3) Quand au dernier point, moi j'ai rien demandé, j'ai juste posé la question pour les multi-colonnes.
Sur ce, moi je m'arrête la. Bon courage aux autres
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 janv. 2010 à 21:04
Bon ...
Bonne nouvelle pour AMYDALE : il aura son traitement de doublons "composés" sur plusieurs colonnes en prime (ça m'a à peine coûté 3 sous espagnols)
J'en ai profité pour chercher et trouver 2 optimisations (hé oui : j'en ai trouvées)...
J'attends de vous d'autres éventuelles optimisations qui m'auraient échappé et "reposte d'un bloc" un nouveau code incluant le traitement "par copie" ...
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 janv. 2010 à 17:51
Pour tout dire : une amélioration/optimisation pourrait être apportée par l'utilisation de la méthode RemoveDuplicates lorsque l'un donne la valeur True au paramètre méthode.
Le problème est que j'ai malheureusement l'impression de ce que la méthode RemoveDuplicates, présente dans ma version Excel (2007), ne l'est pas sur toutes les version d'Excel.
Les possesseurs de versions différentes pourraient-ils me renseigner sur ce point particulier ? (car là oui : possibilité d'optimisation)
Quant à cette affaire de doublons sur plusieurs colonnes (l'exemple Nom Prénom ) : je vais traiter également ce cas etr obn n'en parlera plus (je vois déjà ce qu'il y a à modifier - un minuscule très peu - pour y parvenir sans douleur )
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 janv. 2010 à 16:47
Ecoute :
1) je n'ai sollicité aucun avis quant à l'opportunité de la procédure que je propose (je pense être clair), mais des suggestioins quant à son éventuelle optimisation, si optimisation possible .. (en as-tu ?)
2) auucun bug en ce qui concerne la méthode "par copie", sauf cette affaire gênante de nécessité de partir d'un header (on voit mal la raison de cette nécessité)
3) je n'ai absolument rien à ajouter à mes explications sur la manière d'utiliser le paramètre booléen methode. Elles sont faites pour qui sait comprendre le français4) quant au reste (les raisons de la procédure que je propose ... les "étonnements" et récriminations diverses à propos de l'utilisation seule de la méthode AdvancedFilter avec l'option Unique True) ; il suffit de frapper dans Google : advancedfilter unique bug >> la liste est longue.
Alors : revenons à nos moutons : tu n'as pas de propositions d'optimisation du CODE de la procédure proposée ?
Bien ... Merci de ton passage... et de tes propositions de modifications ( que je n'ai nullement demandées) de la vocations de la procédure.
Merci quand même ...
Rappel important : ce que je souhaite, ce sont toutes suggestions éclairées en vue d'optimiser LA SEULE EXECUTION DU CODE DE LA PROCEDURE PROPOSEE.
Merci d'avance à ceux qui voudront s'y efforcer
cs_amydale
Messages postés16Date d'inscriptionjeudi 3 juin 2004StatutMembreDernière intervention 4 janvier 2012 25 janv. 2010 à 16:32
Vraisemblablement, tu demandes des critiques mais tu n'es pas capable de les accepter
- C'est la ou tu comprends pas ce que je te dis, pas besoin d'être agressif ou mielleux. Je ne dis pas que ta macro ne sert a rien, je dis que tu aimerais faire un truc et que la fonction Excel de base ne correspond pas a ce que tu veux, c'est pas pour ca que c'est un bug
- Traiter une portion de colonne ? Effectivement, comme je le disais ca n'existe pas par défaut. Ce n'est pas un bug, ca n'existe pas, c'est tout. Après chacun ses besoins. J'utilise Excel tous les jours (Excel et VBA), je n'ai personnellement jamais eu à l'utiliser. T'en as besoin ? cool, fais toi une macro (celle ci), mais ne prétend pas révolutionner Excel avec ca. Elle ne fait que couvrir TON besoin
- "On le voit d"'ailleurs fort bien lorsque l'on choisit l'option "sur copie" : là ... tiens .... on supprime vraiment ...*" La fonction copie ne supprime rien du tout, elle copie (elle porte bien son nom non ?) les données filtrées uniquement. Je ne vois pas de bug à l'horizon
- ok, je vais pousser pour les delete :op
- des doublons sur 2 colonnes ? C'est simple, fais le test de mettre des NOMS dans une colonne et des PRENOMS et de lancer une liste sans doublon par AdvancedFilters, tu peux même y ajouter un critère. Je me permet de te conseiller de le regarder, c'est très pratique !
- Oui, le booléen méthode est expliqué dans le code mais ce n'est pas explicite. A moins d'etre l'auteur, à chaque utilisation on doit aller revoir à quoi cela correspond. Tout le monde te le dira. ne serait-ce la renommer en "Masquer_uniquement" ou autres
- "Et quuid, AMYDALE, si Microsoft corrigeait demain (probable, en plus !) ce qui me parait réellement être une carence ? ". Non, il n'y aura jamais de correctif puisqu'il n'y a pas de bug. Au mieux il y aurait un ajout pour combler d'autres besoin, that's all
- tu veux qu'on te donne des optimisations de code, tu ne gères meme pas les plantages comme je l'ai mis dans le message précédent. Bizarrement, tu n'en reparle même pas. Règle déjà ces problèmes faciles. Ceci dit, rapidement je ne vois pas personnellement d'optimisations, je ne dis pas non plus qu'il n'y en a pas.
- et le doevents ?!
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 janv. 2010 à 15:01
Et quuid, AMYDALE, si Microsoft corrigeait demain (probable, en plus !) ce qui me parait réellement être une carence ?
Comment réagiraient les applications qui ont "inclus" un header dans leur traitement. Imagine par exemple que, par malheur, le contenu du "header" soit également présent dans une cellule plus bas ? ===>> une correction (prise en compte du seul range, sans Header) provoquerait, dans toutes les applis qui auraient inclus le header dans le range ... la disparition de toutes les cellules (hors header) comportant cette valeur !
Mon traitement ne craint pas une telle correction, puisqu'il exclut précisément le header !....
Peu vraisemblable, crois-tu, que Microsoft "corrige" ? .... C'est ton point de vue et non le mien ... (Réclamation en cours...)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 25 janv. 2010 à 14:48
Bonjour, AMYDALE,
Désolé, mais tu vas m'expliquer :
- comment tu traiterais, avec la méthode telle qu'elle est, une portion de colonne ! (tu fais quoi, là ? ajouter un "entête de portion" pour t'en sortir ?)
- Ce n'est pas le filtre AdvancedFilter, qui est mis en cause, mais son utilisation avec le paramètre Unique (= True) qui dit bien, lui, ce que celà implique ... On le voit d"'ailleurs fort bien lorsque l'on choisit l'option "sur copie" : là ... tiens .... on supprime vraiment ...*
- ma procédure respecte l'entête, si existe... Ta remarque à ce propos ne tient pas !
- non ! mes delete ne coûtent pas cher en temps ! Ils ne sont faits que d'un bloc (et pas comme toi, tu parais avoir l'habitude de les faire... tu as mal vu...). Essaye donc sur un grand nombre de lignes !
- les "doublons dans deux colonnes" ? ===>> quelle est donc cette philosophie que j'ignore et comment la traiterait donc la méthode, telle qu'elle est, de Microsoft ?
Enfin : tu aurais dû lire avant de commenter ! l'utilisation du booléen métghode y est parfaitement exposée !
Bref ... As-tu une optimisation de ce code à poroposer ? (c'est la seule chose que je demande. La "note" ? on s'en moque comme de l'an 14)
cs_amydale
Messages postés16Date d'inscriptionjeudi 3 juin 2004StatutMembreDernière intervention 4 janvier 2012 25 janv. 2010 à 14:19
Bonjour ucfoutu,
Je dois avouer que je marre toujours quand je vois les messages "j'ai trouvé le plus gros bug imaginable sous excel...". Je suis certes le 1er à dire qu'il y en a (et des gros !), c'est bien souvent qu'on ne sait pas les utiliser.
Je ne dis pas que ta fonction ne t'es pas utile, elle correspond peut-être à TON besoin mais pas forcément celui des autres (ça reste sympa de la partager pour ceux que ca pourrait intéresser).
"les doublons ne sont pas supprimés, mais les lignes qui les contiennent sont simplement masquées ". Tout est dans le nom, la fonction d'appelle "AdvancedFilter" c'est un filtre avancé, pas une suppression avancée.
"Elle ne détermine l'existence de doublons qu'à partir de la seconde ligne de la plage". Il faut une ligne de titres pour travailler avec, ca te semble peut-être inutile mais c'est bien pratique et cette philosophie est utilisée dans un grand nombre de fonction (BDSomme, etc...). Pourquoi ces titres ? Simplement pour utiliser le paramètre des critères. Option qui n'est pas du tout prise en compte dans ta fonction.
Mis à part cela, ta macro est très lente sur les fichiers qui commencerait à prendre du volume (les .delete ca coute cher). Je dirais même que ca plante si on atteint les 65536 lignes (test pour XL2003)
Coté intuitivité, le booléen "methode" n'est pas du tout explicite. True, ca fait quoi déjà ? ^^
Si j'ai bien compris, ca ne marche que pour une seule colonne de données sans doublon (comment je fais des données sans doublon avec 2 colonnes Noms et Prénoms ?)
Quel est l'intéret du DoEvents au milieu ?
Désolé d'être si "négatif"... je ne note pas la source.
Bon courage tout de même
@+
Amy
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 24 janv. 2010 à 16:49
Je l'ai dit dans mes explications : il est probable qu'en dépit de mes efforts (je ne suis pas encore vraiment à l'aide sous VBA/Excel), certaines choses peuvent encore être améliorées par un développeur avancé sous VBA/Excel.
Ce sont principalement leurs avis et/ou suggestions éventuelles qui m'intéressent et qui conduiront à une procédure "polyvalente" mieux ficelée que celle que j'ai déjà en attente dans mon fouillis.
Voilà ! que les plus avancés s'en mêlent sans scrupule : ce sera pour le bien de tous.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 24 janv. 2010 à 16:41
Salut, MPI,
Ce que j'attends surtout, ce sont les réactions, les commentaires et les éventuelles améliorations.
Ceci avant (et dans la perspective) de transformer le tout en une seule procédure paramétrable (pour les "sur place" et les "sur copie".
Je l'ai déjà fait, à vrai dire, mais je ne souhaite pas déposer ce code (qui s'appuie largement sur le premier) sans être certain de ce que tout ce qui pouvait être encore fait pour l'optimiser n'a pas été vu d'abord.
Merci pour tous.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 24 janv. 2010 à 15:17
Salut M. F
Intéressant... je vais regarder ça de plus près. Mais sûrement après mes vacances bien méritées...
10 sept. 2011 à 13:25
14 févr. 2010 à 21:41
Je suis un débutant en VBA
Voila j’ai un classeur Nome FACTURE Excel(V.2003)
Je suis sur une Feuil C
Je voudrais effacer les contenues de touts les cellules
Non Protéger d’un tableau dans la Feuil A
J’ai utiliser une boucle
Fro i=1 to Sheets.Count
Sheets(i).cells.Clear
Next i
Mais elle ne fonctionne pas
La boucle efface tout la feuil A
3 févr. 2010 à 15:06
3 févr. 2010 à 14:10
25 janv. 2010 à 22:47
Si, toi, tu veux rester soumis à cette présence de header, si en plus, lorsque tu utilises la méthode telle qu'elle est pour copier ailleurs et sans doublons, tu te retrouves avec le header dans ta liste de traitement et que cela te plait (y compris de refaire un travail pour exclure le header de ta liste traitée), c'est ton affaire. D'autres, voient différemment et ils sont nombreux.... Microsoft verra bien s'il convient ou non de les satisfaire et dans quelles conditions le faire. J'observe enfin que la version Excel est dotée d'une méthode (que j'ai signalée plus haut) permettant de supprimer les doublons d'une plage. Que c'est curieux, tiens... celle-là, plus longuement réfléchie probablement, n'inclut pas le header, pardi ... Elle traite LA plage concernée et ne dépend pas (logique) de quoi que ce soit d'autre.
Je continue donc allègrement sur ma lancée.... et ce : pour mille et une raisons.
Les multi-colonnes ? c'est maintenant fait sur ma machine (et fera l'objet d'une modif de rien du tout).
La vitesse ? Permets-moi de te faire remarquer que si tu choisis de mettre à False le booléen methode, la seule différence de traitement est l'ajout puis la suppression d'une ligne (et rien d'autre) ! différence de temps d'exécution dans ce cas ? une fraction de seconde.
Un temps légèrement plus long avec methode à True, mais avec la flexibilité que j'ai signalée (relis) dans le vrai respect de ce que veut faire le développeur, sans l'obliger à des acrobaties diverses (voire manuelle) en cas de non satisfaction.
On passe à autre chose ?... (tu as des suggestions d'optimisation du code ?)
25 janv. 2010 à 21:59
L'utilisation du header est peut-être inutile pour toi, mais elle est très utile pour d'autres, ne serait-ce l'utilisation du CriteriaRange de la fonction AdvancedFilter. Vraiment très très pratique. Idem pour toutes les fonctions BD (BDSomme, BDMoyenne, etc)
Ceci dit, ils auraient peut-être pu y mettre un paramètre qui désactive les critères s'il n'y a pas de titres. Est-ce vraiment un bug ?!
2) On peut trouver toutes les conneries du monde sur google. Tu peux taper "bug an 2000" et tu y trouveras des centaines voire des milliers de réponse. Personnellement, mon pc n'a pas explosé.
3) Quand au dernier point, moi j'ai rien demandé, j'ai juste posé la question pour les multi-colonnes.
Sur ce, moi je m'arrête la. Bon courage aux autres
25 janv. 2010 à 21:04
Bonne nouvelle pour AMYDALE : il aura son traitement de doublons "composés" sur plusieurs colonnes en prime (ça m'a à peine coûté 3 sous espagnols)
J'en ai profité pour chercher et trouver 2 optimisations (hé oui : j'en ai trouvées)...
J'attends de vous d'autres éventuelles optimisations qui m'auraient échappé et "reposte d'un bloc" un nouveau code incluant le traitement "par copie" ...
25 janv. 2010 à 17:51
Le problème est que j'ai malheureusement l'impression de ce que la méthode RemoveDuplicates, présente dans ma version Excel (2007), ne l'est pas sur toutes les version d'Excel.
Les possesseurs de versions différentes pourraient-ils me renseigner sur ce point particulier ? (car là oui : possibilité d'optimisation)
Quant à cette affaire de doublons sur plusieurs colonnes (l'exemple Nom Prénom ) : je vais traiter également ce cas etr obn n'en parlera plus (je vois déjà ce qu'il y a à modifier - un minuscule très peu - pour y parvenir sans douleur )
25 janv. 2010 à 16:47
1) je n'ai sollicité aucun avis quant à l'opportunité de la procédure que je propose (je pense être clair), mais des suggestioins quant à son éventuelle optimisation, si optimisation possible .. (en as-tu ?)
2) auucun bug en ce qui concerne la méthode "par copie", sauf cette affaire gênante de nécessité de partir d'un header (on voit mal la raison de cette nécessité)
3) je n'ai absolument rien à ajouter à mes explications sur la manière d'utiliser le paramètre booléen methode. Elles sont faites pour qui sait comprendre le français4) quant au reste (les raisons de la procédure que je propose ... les "étonnements" et récriminations diverses à propos de l'utilisation seule de la méthode AdvancedFilter avec l'option Unique True) ; il suffit de frapper dans Google : advancedfilter unique bug >> la liste est longue.
Alors : revenons à nos moutons : tu n'as pas de propositions d'optimisation du CODE de la procédure proposée ?
Bien ... Merci de ton passage... et de tes propositions de modifications ( que je n'ai nullement demandées) de la vocations de la procédure.
Merci quand même ...
Rappel important : ce que je souhaite, ce sont toutes suggestions éclairées en vue d'optimiser LA SEULE EXECUTION DU CODE DE LA PROCEDURE PROPOSEE.
Merci d'avance à ceux qui voudront s'y efforcer
25 janv. 2010 à 16:32
- C'est la ou tu comprends pas ce que je te dis, pas besoin d'être agressif ou mielleux. Je ne dis pas que ta macro ne sert a rien, je dis que tu aimerais faire un truc et que la fonction Excel de base ne correspond pas a ce que tu veux, c'est pas pour ca que c'est un bug
- Traiter une portion de colonne ? Effectivement, comme je le disais ca n'existe pas par défaut. Ce n'est pas un bug, ca n'existe pas, c'est tout. Après chacun ses besoins. J'utilise Excel tous les jours (Excel et VBA), je n'ai personnellement jamais eu à l'utiliser. T'en as besoin ? cool, fais toi une macro (celle ci), mais ne prétend pas révolutionner Excel avec ca. Elle ne fait que couvrir TON besoin
- "On le voit d"'ailleurs fort bien lorsque l'on choisit l'option "sur copie" : là ... tiens .... on supprime vraiment ...*" La fonction copie ne supprime rien du tout, elle copie (elle porte bien son nom non ?) les données filtrées uniquement. Je ne vois pas de bug à l'horizon
- ok, je vais pousser pour les delete :op
- des doublons sur 2 colonnes ? C'est simple, fais le test de mettre des NOMS dans une colonne et des PRENOMS et de lancer une liste sans doublon par AdvancedFilters, tu peux même y ajouter un critère. Je me permet de te conseiller de le regarder, c'est très pratique !
- Oui, le booléen méthode est expliqué dans le code mais ce n'est pas explicite. A moins d'etre l'auteur, à chaque utilisation on doit aller revoir à quoi cela correspond. Tout le monde te le dira. ne serait-ce la renommer en "Masquer_uniquement" ou autres
- "Et quuid, AMYDALE, si Microsoft corrigeait demain (probable, en plus !) ce qui me parait réellement être une carence ? ". Non, il n'y aura jamais de correctif puisqu'il n'y a pas de bug. Au mieux il y aurait un ajout pour combler d'autres besoin, that's all
- tu veux qu'on te donne des optimisations de code, tu ne gères meme pas les plantages comme je l'ai mis dans le message précédent. Bizarrement, tu n'en reparle même pas. Règle déjà ces problèmes faciles. Ceci dit, rapidement je ne vois pas personnellement d'optimisations, je ne dis pas non plus qu'il n'y en a pas.
- et le doevents ?!
25 janv. 2010 à 15:01
Comment réagiraient les applications qui ont "inclus" un header dans leur traitement. Imagine par exemple que, par malheur, le contenu du "header" soit également présent dans une cellule plus bas ? ===>> une correction (prise en compte du seul range, sans Header) provoquerait, dans toutes les applis qui auraient inclus le header dans le range ... la disparition de toutes les cellules (hors header) comportant cette valeur !
Mon traitement ne craint pas une telle correction, puisqu'il exclut précisément le header !....
Peu vraisemblable, crois-tu, que Microsoft "corrige" ? .... C'est ton point de vue et non le mien ... (Réclamation en cours...)
25 janv. 2010 à 14:48
Désolé, mais tu vas m'expliquer :
- comment tu traiterais, avec la méthode telle qu'elle est, une portion de colonne ! (tu fais quoi, là ? ajouter un "entête de portion" pour t'en sortir ?)
- Ce n'est pas le filtre AdvancedFilter, qui est mis en cause, mais son utilisation avec le paramètre Unique (= True) qui dit bien, lui, ce que celà implique ... On le voit d"'ailleurs fort bien lorsque l'on choisit l'option "sur copie" : là ... tiens .... on supprime vraiment ...*
- ma procédure respecte l'entête, si existe... Ta remarque à ce propos ne tient pas !
- non ! mes delete ne coûtent pas cher en temps ! Ils ne sont faits que d'un bloc (et pas comme toi, tu parais avoir l'habitude de les faire... tu as mal vu...). Essaye donc sur un grand nombre de lignes !
- les "doublons dans deux colonnes" ? ===>> quelle est donc cette philosophie que j'ignore et comment la traiterait donc la méthode, telle qu'elle est, de Microsoft ?
Enfin : tu aurais dû lire avant de commenter ! l'utilisation du booléen métghode y est parfaitement exposée !
Bref ... As-tu une optimisation de ce code à poroposer ? (c'est la seule chose que je demande. La "note" ? on s'en moque comme de l'an 14)
25 janv. 2010 à 14:19
Je dois avouer que je marre toujours quand je vois les messages "j'ai trouvé le plus gros bug imaginable sous excel...". Je suis certes le 1er à dire qu'il y en a (et des gros !), c'est bien souvent qu'on ne sait pas les utiliser.
Je ne dis pas que ta fonction ne t'es pas utile, elle correspond peut-être à TON besoin mais pas forcément celui des autres (ça reste sympa de la partager pour ceux que ca pourrait intéresser).
"les doublons ne sont pas supprimés, mais les lignes qui les contiennent sont simplement masquées ". Tout est dans le nom, la fonction d'appelle "AdvancedFilter" c'est un filtre avancé, pas une suppression avancée.
"Elle ne détermine l'existence de doublons qu'à partir de la seconde ligne de la plage". Il faut une ligne de titres pour travailler avec, ca te semble peut-être inutile mais c'est bien pratique et cette philosophie est utilisée dans un grand nombre de fonction (BDSomme, etc...). Pourquoi ces titres ? Simplement pour utiliser le paramètre des critères. Option qui n'est pas du tout prise en compte dans ta fonction.
Mis à part cela, ta macro est très lente sur les fichiers qui commencerait à prendre du volume (les .delete ca coute cher). Je dirais même que ca plante si on atteint les 65536 lignes (test pour XL2003)
Coté intuitivité, le booléen "methode" n'est pas du tout explicite. True, ca fait quoi déjà ? ^^
Si j'ai bien compris, ca ne marche que pour une seule colonne de données sans doublon (comment je fais des données sans doublon avec 2 colonnes Noms et Prénoms ?)
Quel est l'intéret du DoEvents au milieu ?
Désolé d'être si "négatif"... je ne note pas la source.
Bon courage tout de même
@+
Amy
24 janv. 2010 à 16:49
Ce sont principalement leurs avis et/ou suggestions éventuelles qui m'intéressent et qui conduiront à une procédure "polyvalente" mieux ficelée que celle que j'ai déjà en attente dans mon fouillis.
Voilà ! que les plus avancés s'en mêlent sans scrupule : ce sera pour le bien de tous.
24 janv. 2010 à 16:41
Ce que j'attends surtout, ce sont les réactions, les commentaires et les éventuelles améliorations.
Ceci avant (et dans la perspective) de transformer le tout en une seule procédure paramétrable (pour les "sur place" et les "sur copie".
Je l'ai déjà fait, à vrai dire, mais je ne souhaite pas déposer ce code (qui s'appuie largement sur le premier) sans être certain de ce que tout ce qui pouvait être encore fait pour l'optimiser n'a pas été vu d'abord.
Merci pour tous.
24 janv. 2010 à 15:17
Intéressant... je vais regarder ça de plus près. Mais sûrement après mes vacances bien méritées...