coder la suppression des doublons [VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 04-12-2024 à 16:15:34
Salut,
Je viens de tester ton code chez moi, il détecte bien la feuille "Données" si elle existe...
Tu as essayé avec un nom de feuille sans accent pour voir si ton souci ne vient pas de là ?
Marsh Posté le 04-12-2024 à 16:28:18
Alkor2001 a écrit : Salut, |
Merci pour ton retour
Oui c'est un des 1ers test que j'ai fait, et cela ne vient pas de là
En tt cas ton message me rassure car au moins le code semble bon.
Marsh Posté le 04-12-2024 à 17:00:32
je vais essayer demain dans un autre environnement de travail pour voir si ça fonctionne
Marsh Posté le 04-12-2024 à 17:02:07
Bizarre...
Un point de détail : dans ton code il y a un espace en trop entre la guillemet et la fin de parenthèse dans cette ligne :
Code :
|
Mon Excel le supprime automatiquement, ce n'est pas le cas chez toi ?
D'autre part ça fait pareil si tu remplaces cette ligne par
Code :
|
?
Edit : Si ça ne change rien, je commencerais par essayer de lancer le code suivant pour voir ce que ça donne :
Code :
|
Marsh Posté le 04-12-2024 à 17:22:33
Alkor2001 a écrit : Un point de détail : dans ton code il y a un espace en trop entre la guillemet et la fin de parenthèse dans cette ligne : |
Il me semble que c'est le forum qui fait ça?
Sinon perso j'aurais dit soucis d'encodage aussi, mais j'y connais rien à Excel.
Marsh Posté le 04-12-2024 à 17:35:14
rat de combat a écrit : Il me semble que c'est le forum qui fait ça? |
Ah oui bien vu ! Ca a fait pareil sur mon code...
Marsh Posté le 07-12-2024 à 11:15:42
Bon et bien chez moi, ça fonctionne.
Au bureau, ça ne fonctionne pas. Je ne saurais l'expliquer...
Mais au moins je suis fixé, le code est bon.
Merci à vous
Marsh Posté le 07-12-2024 à 16:32:32
Version Excel différente?
Restriction de l'usage du VBA par le service IT de ta boîte?
Marsh Posté le 07-12-2024 à 22:06:24
rat de combat a écrit : Version Excel différente? |
je sais pas trop, j'ai d'autres macros qui marche parfaitement bien donc...
Marsh Posté le 09-12-2024 à 15:31:23
Bonjour,
si le code est contenu dans le classeur de la feuille "Données" alors utilisez le CodeName de la feuille :
le code fonctionnera toujours même si la feuille est renommée !
Ou mieux : incorporer directement la procédure VBA dans le module de la feuille ainsi pas besoin de la référencer
et alors une unique ligne de code est nécessaire, donc sans variable objet superflue :
UsedRange.RemoveDuplicates Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 1 si la feuille est intelligemment organisée (1) …
Et si la procédure n'est pas hébergée dans le module de la feuille mais bien située dans le classeur de la feuille alors
il suffit de précéder UsedRange par le CodeName de la feuille suivi d'un point sinon par un classique référencement via Sheets ou Worksheets.
Donc pour supprimer les doublons quelle que soit la configuration une unique ligne de code est nécessaire !
(En référence au code du post initial les lignes n° 2 à 23 sont donc inutiles.)
(1) Sinon remplacer UsedRange par une cellule de référence du genre [A1].CurrentRegion, tout étant déjà expliqué dans l'aide VBA …
paul30 a écrit : Je ne comprends pas pourquoi. Une idée? |
Evidemment : la feuille ne s'appelle tout simplement pas "Données" (car "Données" n'est pas "Données " par exemple)
ou elle n'est pas dans le classeur contenant le code, référencé par ThisWorkbook …
Marsh Posté le 16-12-2024 à 08:35:20
Marc L a écrit : Bonjour, si le code est contenu dans le classeur de la feuille "Données" alors utilisez le CodeName de la feuille : Ou mieux : incorporer directement la procédure VBA dans le module de la feuille ainsi pas besoin de la référencer UsedRange.RemoveDuplicates Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 1 si la feuille est intelligemment organisée (1) … Et si la procédure n'est pas hébergée dans le module de la feuille mais bien située dans le classeur de la feuille alors Donc pour supprimer les doublons quelle que soit la configuration une unique ligne de code est nécessaire ! (1) Sinon remplacer UsedRange par une cellule de référence du genre [A1].CurrentRegion, tout étant déjà expliqué dans l'aide VBA … |
Marc L a écrit : Evidemment : la feuille ne s'appelle tout simplement pas "Données" (car "Données" n'est pas "Données " par exemple) |
bonjour,
merci pour ton message, mais comme expliqué plus haut, avec capture d'écran à l'appui, vérifier l'orthographe de la feuille est la 1ère chose que j'ai faite. Et celle-ci n'est pas en cause.
Marsh Posté le 16-12-2024 à 09:58:30
mon code est enregistré dans le classeur de macros personnelle (personal.xlsb) --> fonctionne pas.
Je viens de tester en l'écrivant directement dans mon fichier dédié et là ça fonctionne.
Je ne sais pas pourquoi
Marsh Posté le 16-12-2024 à 10:44:33
Comme évoqué précédemment l'erreur est d'utiliser ThisWorkbook alors que la procédure est située dans le classeur de macros personnelles !
Donc si besoin de référencer un classeur utiliser alors ActiveWorkbook par exemple, une seule ligne de code étant nécessaire …
Marsh Posté le 16-12-2024 à 12:52:41
Perso, j'utilise cette façon pour appeler un onglet : Application.Worksheets("Données" )
Marsh Posté le 17-12-2024 à 17:21:13
Oui Application ou ActiveWorkbook, du pareil au même … Moins de lettres à taper certes avec Application pour les plus fénéants !
Marsh Posté le 04-12-2024 à 11:43:25
Bonjour,
J'essaye de reproduire en VBA la fonction native d'Excel de suppression de doublon.
J'ai un tableau de données, avec en-tête sur colonnes A à J dans l'onglet "Données"
Je souhaite que la macro supprime les doublons. 2 lignes sont en doublon quand elles sont strictement identiques.
Mon code est le suivant:
A l'exécution, il ne détecte pas l'onglet "données", considérant qu'il est inexistant dans le classeur.
Je ne comprends pas pourquoi. Une idée?
Cela fonctionne si je remplace simplement les lignes 7 à 9 par:
Ce qui m'intrigue encore plus.
Je tiens à ne pas être obligé de me positionner sur l'onglet Données pour que ça marche, d'où mon choix de ne pas utiliser activesheet.
Merci pour votre aide.