Bonjour à toutes et à tous,
ma question concerne la suppression de doublons.
Je voudrais savoir quelle règle suit excel quand, face à deux (ou n) éléments identiques, il n'en laisse qu'un.
en clair, si deux éléments identiques sont par exemple respectivement sur la ligne 3 et 25, pourquoi xl supprime-t-il la ligne 25 plutôt que 3 ?
Dans mon cas précis, ça n'est pas sans importance (ici cas fictif, réduit à sa plus simple expression et avec des valeurs parlantes; la réalité est beaucoup plus complexe ... )
Feuille Table contient une nomenclature de produits et la famille respective (ex : Kiwi rattaché à la famille Fruit, betterave à la famille Légume)
Feuille Base contient un historique des ventes et présente donc pour les différents produits les volumes et lieux de livraison
A partir de Base, je recueille les produits nouveaux et les affecte à leur famille de rattachement (ex : le produit cerise apparaît en feuille Base et donc il m'appartient de mettre à jour Table : cerise = Fruit)
Avec mon code j'actualise la feuille Table : j'ajoute à Table les produits nouveaux issus de Base
Pour cela, je copie Base dans Table puis supprime les doublons et ne sélectionne que la colonne Produits (sinon, avec 2 colonnes sélectionnées, xl ne voit pas - à juste titre - de redondance)
Mais je veux impérativement conserver dans Table l'information concernant la famille. Ainsi, avec remove duplicates, je veux par exemple pour Abricot (en Base mais déjà présent en Table) que excel conserve
la ligne Abricot Fruit et non Abricot (tout court ou Abricot 27 comme en Base).
Pour l'heure, le code semble faire ça mais je ne sais pas pourquoi. Je ne voudrais pas employer un code qui ultérieurement me fera faire des erreurs, que je risque de ne pas voir quand j'utiliserai les vraies données (volume important et peu parlantes, donc erreurs peu détectables)
Quelqu'un sait-il si avec mon code, quand je tombe sur
Produit Famille
Abricot Fruit
et
Abricot (vide)
ce sera bien toujours la ligne Abricot Fruit qui sera conservé ?
Sub Purge()
Dim lastBase As Long
Dim lastTable As Long
Dim lastActu As Long
lastBase = Sheets("Base").Range("B" & Rows.Count).End(xlUp).Row
lastTable = Sheets("Table").Range("B" & Rows.Count).End(xlUp).Row
' on copie les données de la feuille 'Base' vers la feuille 'Table'
Sheets("Base").Range("B2:B" & lastBase).Copy Destination:=Sheets("Table").Range("A" & lastTable + 1)
' les données étant ajoutées, on supprime les doublons
lastActu = Sheets("Table").Range("A" & Rows.Count).End(xlUp).Row 'on sonde à nouveau la dernière ligne car on y a ajouté des données
Sheets("Table").Range("A1:A" & lastActu).RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
Merci d'avance pour vos lumières
PS : veuillez excuser la mise en forme, tout à coup sur un autre ordi, je ne retrouve plus les balises et autres mises en forme ...
ma question concerne la suppression de doublons.
Je voudrais savoir quelle règle suit excel quand, face à deux (ou n) éléments identiques, il n'en laisse qu'un.
en clair, si deux éléments identiques sont par exemple respectivement sur la ligne 3 et 25, pourquoi xl supprime-t-il la ligne 25 plutôt que 3 ?
Dans mon cas précis, ça n'est pas sans importance (ici cas fictif, réduit à sa plus simple expression et avec des valeurs parlantes; la réalité est beaucoup plus complexe ... )
Feuille Table contient une nomenclature de produits et la famille respective (ex : Kiwi rattaché à la famille Fruit, betterave à la famille Légume)
Feuille Base contient un historique des ventes et présente donc pour les différents produits les volumes et lieux de livraison
A partir de Base, je recueille les produits nouveaux et les affecte à leur famille de rattachement (ex : le produit cerise apparaît en feuille Base et donc il m'appartient de mettre à jour Table : cerise = Fruit)
Avec mon code j'actualise la feuille Table : j'ajoute à Table les produits nouveaux issus de Base
Pour cela, je copie Base dans Table puis supprime les doublons et ne sélectionne que la colonne Produits (sinon, avec 2 colonnes sélectionnées, xl ne voit pas - à juste titre - de redondance)
Mais je veux impérativement conserver dans Table l'information concernant la famille. Ainsi, avec remove duplicates, je veux par exemple pour Abricot (en Base mais déjà présent en Table) que excel conserve
la ligne Abricot Fruit et non Abricot (tout court ou Abricot 27 comme en Base).
Pour l'heure, le code semble faire ça mais je ne sais pas pourquoi. Je ne voudrais pas employer un code qui ultérieurement me fera faire des erreurs, que je risque de ne pas voir quand j'utiliserai les vraies données (volume important et peu parlantes, donc erreurs peu détectables)
Quelqu'un sait-il si avec mon code, quand je tombe sur
Produit Famille
Abricot Fruit
et
Abricot (vide)
ce sera bien toujours la ligne Abricot Fruit qui sera conservé ?
Sub Purge()
Dim lastBase As Long
Dim lastTable As Long
Dim lastActu As Long
lastBase = Sheets("Base").Range("B" & Rows.Count).End(xlUp).Row
lastTable = Sheets("Table").Range("B" & Rows.Count).End(xlUp).Row
' on copie les données de la feuille 'Base' vers la feuille 'Table'
Sheets("Base").Range("B2:B" & lastBase).Copy Destination:=Sheets("Table").Range("A" & lastTable + 1)
' les données étant ajoutées, on supprime les doublons
lastActu = Sheets("Table").Range("A" & Rows.Count).End(xlUp).Row 'on sonde à nouveau la dernière ligne car on y a ajouté des données
Sheets("Table").Range("A1:A" & lastActu).RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
Merci d'avance pour vos lumières
PS : veuillez excuser la mise en forme, tout à coup sur un autre ordi, je ne retrouve plus les balises et autres mises en forme ...