Import de données texte sans doublon

Bonjour le forum,

Je souhaiterais importer de manière automatique les données d'une colonne se trouvant sur une feuille X, A5:A300 sur une autre feuille Y, A5:A300 en supprimant les doublons se trouvant sur la feuille X.

Les données de la feuille X sont évolutives et se complètent au fil des jours.

Est-il possible d'exécuter cette opération par une formule ?

Je cherche depuis plusieurs jours mais sans succès.

Merci d'avance pour votre aide.

Bonjour vic,

voici un exemple avec un TCD, dite-moi si ça vous convient ?

24vic-importer.xlsx (12.05 Ko)

Bonjour SabV,

Merci pour votre réponse rapide.

La méthode que vous me proposez ici ne permet malheureusement pas une mise à jour en temps réel de ma feuille "statistiques" des données qui s'ajoutent régulièrement sur ma feuille "Entrées".

Je vous joins le fichier en question pour une meilleure compréhension du problème.

De plus, avec cette méthode, une ligne s'ajoute au dessus de la liste des données qui doivent apparaître sur la feuille "Statistiques".

Je souhaiterais que les données entrées régulièrement sur la feuilles "Entrées" apparaissent sans doublon sur la feuille "Statistiques", ce qui me permettrait de compter le nombre total de rentrées par type d'outillage encodé tout au long de l'année.

Je ne sais pas si cela est possible et comme je suis néophyte en excel, j'ai essayé diverses formules trouvées sur les forums mais je n'arrive pas à résoudre mon problème.

Merci encore pour votre dévouement .

Avec le fichier, c'est mieux....

Je finirai bien par ne plus commettre d'erreur en postant.

Mille excuses.

9outillage.xlsx (18.35 Ko)

Bonjour vic,

avec formule je ne sais pas faire,

voici un exemple en vba,

voici ce que j'ai mis sur la page code de l'onglet "Entrées ",

Private Sub Worksheet_Change(ByVal Target As Range)
Dim mondico, n As Long, plg As Range, isect, c

n = Sheets("Entrées ").Cells(Rows.Count, 2).End(xlUp).Row
Set plg = Sheets("Entrées ").Range("B5:B" & n)
Set mondico = CreateObject("Scripting.Dictionary")

Set isect = Application.Intersect(Target, plg)
If isect Is Nothing Then Exit Sub

For Each c In plg.Value
   mondico(c) = ""
Next c

Sheets("Statistiques").Range("A5").Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)

Set mondico = Nothing
Set plg = Nothing
End Sub

Bonjour,

Une proposition à étudier.

Cdlt.

18outillage.xlsm (30.00 Ko)

Bonjour SabV et Jean-Eric,

Merci pour votre super travail et pour les solutions proposées.

En ce qui concerne le code VBA de SabV, je n'arrive pas à le lancer. Lorsque j'essaie, une fenêtre s'ouvre et me demande le nom de la macro. Il est vrai que je suis totalement nul en macro mais je ne demande qu'à apprendre et à comprendre ; un long travail en perspective. Je dois probablement passer à côté d'un élément indispensable à son fonctionnement. Pouvez-vous m'indiquer la marche à suivre afin de comprendre où se situe mon ou mes erreurs ?

Le TCD de Jean-Eric fonctionne bien et les données sont bien mises à jour en temps réel. Un seul bémol, avec cette méthode, je ne pense pas que je puisse conserver la mise en page que j'avais conçue pour mon classeur. J'aimerais la garder telle quelle afin de pouvoir imprimer les feuilles et avoir une mise en page correcte.

Je continue à essayer et vous dis encore un énorme MERCI pour votre aide.

Re,

C'est ballot de commencer par une mise en page.

Cdlt.

Re,

Disons que toute la gestion de stock est opérationnelle et que j'ai voulu ajouter la page statistiques.

Et dire que je pensais que ce ne serait qu'une formalité.....

C'est encore une pensée de débutant.....

Encore merci

Cdlt.

Bonjour vic, Jean-Eric,

En ce qui concerne le code VBA de SabV, je n'arrive pas à le lancer.

ce n'est pas un code que l'on lance mais une macro événementielle,

c'est à dire que cette macro s'exécute lors d'un changement de valeur sur l'onglet concerné, et sur la condition que la cellule soit incluse dans une plage déterminée.

Bonjour SabV et Jean-Eric,

Merci SabV pour l'explication du code VBA.

Ca fonctionne parfaitement.

Est-il possible de compléter le code pour que les données soient triées par ordre alphabétique ?

Je vais maintenant essayer de comprendre le code et les différentes instructions qu'il comporte.

J'ai aussi trouvé sur le forum une possibilité qui fonctionne bien aussi mais avec formule. J'avoue que cette formule est tellement compliquée que je ne suis pas certain d'arriver un jour à la comprendre. Merci à par R@chid » qui a posté cette solution le 4 janvier 2013.

J'avoue que j'ai une préférence pour le code VBA .

Je vous joins toujours le fichier au cas où certains seraient intéressés.

Merci encore pour tout le travail et les conseils.

Cdlt.

8outillage3.xlsx (19.38 Ko)

Bonjour Vic,

voici la modification pour le trie,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim mondico, n As Long, plg As Range, isect, c

n = Sheets("Entrées ").Cells(Rows.Count, 2).End(xlUp).Row
Set plg = Sheets("Entrées ").Range("B5:B" & n)
Set mondico = CreateObject("Scripting.Dictionary")

Set isect = Application.Intersect(Target, plg)
If isect Is Nothing Then Exit Sub

For Each c In plg.Value
   mondico(c) = ""
Next c

n = mondico.Count

With Sheets("Statistiques")
    .Range("A5").Resize(n, 1) = Application.Transpose(mondico.keys)
    .Range("A5:A" & 5 + n).Sort key1:=.Range("A5"), order1:=xlAscending
End With

Set mondico = Nothing
Set plg = Nothing
End Sub

Bonjour SabV,

Merci pour la correction, ça fonctionne nickel !

Avant de clôturer le sujet, pourriez-vous, si je n'abuse pas trop de votre temps, m'indiquer comment réaliser le tri automatique de ma colonne 'Outillage' sur ma feuille de 'Données' ?

La macro que j'ai adaptée à ma feuille "Données" trie bien les données lorsque je reviens sur la feuille mais pas instantanément, ce qui fait que mes données ne se trient pas directement sur mes autres feuilles liées à ma feuille de données.

J'aurais souhaité que le tri soit fait directement lorsque je quitte la feuille. Est-ce réalisable ?

Le fichier est en annexe.

Encore un énorme MERCI pour votre dévouement et votre patience. Ca donne vraiment envie de progresser dans la maîtrise d'Excel.

Cdlt

Bonjour,

J'aurais souhaité que le tri soit fait directement lorsque je quitte la feuille. Est-ce réalisable ?

oui, supprimer l'événement Worksheet_Activate et le remplacer par

Private Sub Worksheet_Deactivate()
 With Sheets("Données")
  .Range("A2:A300").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
   OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 End With
End Sub

Bonjour SabV,

Merci pour la correction du code. Ca fonctionne maintenant parfaitement.

Je pense pouvoir marquer le sujet comme résolu et vous remerciez, vous et Jean-Eric pour votre investissement en temps et pour votre partage de connaissances ainsi que pour votre compétence.

Heureusement que des gens comme vous se décarcassent pour venir en aide aux novices dont je fais partie mais aussi aux plus avertis.

Encore MERCI pour tout.

Cdlt

Merci Vic pour ce retour, c'est très apprécié, au plaisir!

Rechercher des sujets similaires à "import donnees texte doublon"