Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer doublons tableau > SQL ?

10 réponses
Avatar
FdeCourt
Bonjour,

J'ai un tableau dans excel de 50 000 ligne environs.
Ce tableau est mis =E0 jours tr=E8s fr=E9quements (l'int=E9gralit=E9 est
remplac=E9 par de nouvelles valeurs).
Ce tableau n'a qu'une colonne, dans lequel il peut y avoir =E9norm=E9ment
de doublons.

Je le copie donc dans une variable tableau :

bdd_tmp =3D .Range("A1:A" & Range("A65536").End(xlUp).Row).Value

Ensuite j'ai une boucle qui me supprime un certain nombre de ligne
dont je ne veux pas, et qui me met le r=E9sultat dans une autre variable
tableau, =E0 une dimension.

J'aimerais ensuite avoir une autre boucle qui ne me concerve qu'une
ligne de chaque doublon.

ainsi de

A
A
A
B
B
A
A
B
B
B
C
C
C
A
A
A

Je voudrais avoir un tableau qui ne me liste que A, B et C.

Est-ce qu'il est possible de lancer de pseudo requete similli SQL sur
des variables tableau (un SELECT DISTINCT serait parfait).

Merci pour votre aide

Cordialement,

F.

10 réponses

Avatar
Fdecourt
Oups, je précise, j'ai du code qui me permet de supprimer mes
doublons, mais je cherche à l'optimiser, et étant en plein dans les
connections à des bases de données pour rapatrier des données dans
Excel, je me demandais si ce n'était pas possible de le faire.
Dans le cas actuel, les données ne viennent pas d'une base de données,
mais d'un tableau HTML (analyse de logs).

Cordialement,

F.
Avatar
Daniel.C
Bonjour.
Essaie un dictionnaire, c'est super rapide ;-)
Daniel

Bonjour,

J'ai un tableau dans excel de 50 000 ligne environs.
Ce tableau est mis à jours très fréquements (l'intégralité est
remplacé par de nouvelles valeurs).
Ce tableau n'a qu'une colonne, dans lequel il peut y avoir énormément
de doublons.

Je le copie donc dans une variable tableau :

bdd_tmp = .Range("A1:A" & Range("A65536").End(xlUp).Row).Value

Ensuite j'ai une boucle qui me supprime un certain nombre de ligne
dont je ne veux pas, et qui me met le résultat dans une autre variable
tableau, à une dimension.

J'aimerais ensuite avoir une autre boucle qui ne me concerve qu'une
ligne de chaque doublon.

ainsi de

A
A
A
B
B
A
A
B
B
B
C
C
C
A
A
A

Je voudrais avoir un tableau qui ne me liste que A, B et C.

Est-ce qu'il est possible de lancer de pseudo requete similli SQL sur
des variables tableau (un SELECT DISTINCT serait parfait).

Merci pour votre aide

Cordialement,

F.


Avatar
Fdecourt
Bonjour,

Désolé pour l'ancien message, j'ai oublié de le copier/coller (merci à
Daniel C. pour la remarque ;))
J'ai un tableau dans Excel de 50 000 lignes environ.
Ce tableau est mis à jours très fréquemment (l'intégralité du tab leau
est remplacée par de nouvelles valeurs).
Ce tableau n'a qu'une colonne, dans lequel il peut y avoir énormément
de doublons.

Je le copie donc dans une variable tableau :

bdd_tmp = .Range("A1:A" & Range("A65536").End(xlUp).Row).Value

Ensuite j'ai une boucle qui me supprime un certain nombre de lignes
dont je ne veux pas, et qui me met le résultat dans une autre variable
tableau, à une dimension.

J'ai ensuite une autre boucle qui ne me conserve qu'un exemplaire de
chaque doublon

Par exemple, c'est simple ;)

A
A
A
B
B
A
A
B
B
B
C
C
C
A
A
A

Je voudrais avoir un tableau qui ne me liste que A, B et C.

Est-ce qu'il est possible de lancer de pseudo requête SQL sur des
variables tableaux (un truc genre SELECT DISTINCT serait parfait).

Merci pour votre aide

Cordialement,

F.

PS : Je précise : j'ai du code qui me permet de supprimer mes
doublons, mais je cherche à l'optimiser, et à trouver une méthode plu s
rapide pour traiter mes données.
Avatar
MichDenis
Tu as le filtre élaboré qui fait ce type de travail.
dans la fenêtre du filtre, il ne faut pas oublié de
cocher l'option sans doublon... pas besoin de définir
une zone de critère.

Par requête, tu pourrais utiliser ADO
Ajouter la référence : "Microsoft activex data object 2.x librairy"

Un exemple :

Sub MaRequêteAvecADO()

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, FeuilData As String
Dim File As String


'Nom de la feuille où sont les données
FeuilData = "Feuil1"

'Nom de la feuille où tu veux copier les données


'La requête qui sera exécutée.
Requete = "SELECT F1 From [" & FeuilData & "$] Group By F1"

'Fichier sur lequel se fera la requête :
File = ThisWorkbook.FullName

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;"""

Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
Feuil2.Range("A1").CopyFromRecordset Rst

Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing

End Sub





"FdeCourt" a écrit dans le message de groupe de discussion :

Bonjour,

J'ai un tableau dans excel de 50 000 ligne environs.
Ce tableau est mis à jours très fréquements (l'intégralité est
remplacé par de nouvelles valeurs).
Ce tableau n'a qu'une colonne, dans lequel il peut y avoir énormément
de doublons.

Je le copie donc dans une variable tableau :

bdd_tmp = .Range("A1:A" & Range("A65536").End(xlUp).Row).Value

Ensuite j'ai une boucle qui me supprime un certain nombre de ligne
dont je ne veux pas, et qui me met le résultat dans une autre variable
tableau, à une dimension.

J'aimerais ensuite avoir une autre boucle qui ne me concerve qu'une
ligne de chaque doublon.

ainsi de

A
A
A
B
B
A
A
B
B
B
C
C
C
A
A
A

Je voudrais avoir un tableau qui ne me liste que A, B et C.

Est-ce qu'il est possible de lancer de pseudo requete similli SQL sur
des variables tableau (un SELECT DISTINCT serait parfait).

Merci pour votre aide

Cordialement,

F.
Avatar
MichDenis
Je te crois pas... as-tu toi aussi écrit un livre sur le sujet ?

;-)))



"Daniel.C" a écrit dans le message de groupe de discussion :

Bonjour.
Essaie un dictionnaire, c'est super rapide ;-)
Daniel

Bonjour,

J'ai un tableau dans excel de 50 000 ligne environs.
Ce tableau est mis à jours très fréquements (l'intégralité est
remplacé par de nouvelles valeurs).
Ce tableau n'a qu'une colonne, dans lequel il peut y avoir énormément
de doublons.

Je le copie donc dans une variable tableau :

bdd_tmp = .Range("A1:A" & Range("A65536").End(xlUp).Row).Value

Ensuite j'ai une boucle qui me supprime un certain nombre de ligne
dont je ne veux pas, et qui me met le résultat dans une autre variable
tableau, à une dimension.

J'aimerais ensuite avoir une autre boucle qui ne me concerve qu'une
ligne de chaque doublon.

ainsi de

A
A
A
B
B
A
A
B
B
B
C
C
C
A
A
A

Je voudrais avoir un tableau qui ne me liste que A, B et C.

Est-ce qu'il est possible de lancer de pseudo requete similli SQL sur
des variables tableau (un SELECT DISTINCT serait parfait).

Merci pour votre aide

Cordialement,

F.


Avatar
Daniel.C
Quel sujet ? Le seul livre que j'ai écrit fut un recueil de poésie que
j'ai publié à compte d'auteur dans ma prime adolescence ("La mer est
mon poison", 200 exemplaires imprimés, moins de 10 vendus !) ;-)))
C'est par désespoir de pouvoir vivre de ma plume que je suis devenu
informaticien.
Daniel

Je te crois pas... as-tu toi aussi écrit un livre sur le sujet ?

;-)))



"Daniel.C" a écrit dans le message de groupe de
discussion :
Bonjour.
Essaie un dictionnaire, c'est super rapide ;-)
Daniel

Bonjour,

J'ai un tableau dans excel de 50 000 ligne environs.
Ce tableau est mis à jours très fréquements (l'intégralité est
remplacé par de nouvelles valeurs).
Ce tableau n'a qu'une colonne, dans lequel il peut y avoir énormément
de doublons.

Je le copie donc dans une variable tableau :

bdd_tmp = .Range("A1:A" & Range("A65536").End(xlUp).Row).Value

Ensuite j'ai une boucle qui me supprime un certain nombre de ligne
dont je ne veux pas, et qui me met le résultat dans une autre variable
tableau, à une dimension.

J'aimerais ensuite avoir une autre boucle qui ne me concerve qu'une
ligne de chaque doublon.

ainsi de

A
A
A
B
B
A
A
B
B
B
C
C
C
A
A
A

Je voudrais avoir un tableau qui ne me liste que A, B et C.

Est-ce qu'il est possible de lancer de pseudo requete similli SQL sur
des variables tableau (un SELECT DISTINCT serait parfait).

Merci pour votre aide

Cordialement,

F.




Avatar
Fdecourt
Ca dérive ;)

Il n'y a donc pas moyen de faire des requêtes sur une variable
tableau, directement…..
C'est fort dommage ;)
Avatar
Daniel.C
> Ca dérive ;)



D'où le "HS" dans le titre du message.
Daniel
Avatar
BOISGONTIER
Bonjour,

http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm#AlimenterListe

http://boisgontierjacques.free.fr/pages_site/ado.htm#ListeSansDoublons

JB
http://boisgontierjacques.fr

"FdeCourt" a écrit dans le message de news:

Bonjour,

J'ai un tableau dans excel de 50 000 ligne environs.
Ce tableau est mis à jours très fréquements (l'intégralité est
remplacé par de nouvelles valeurs).
Ce tableau n'a qu'une colonne, dans lequel il peut y avoir énormément
de doublons.

Je le copie donc dans une variable tableau :

bdd_tmp = .Range("A1:A" & Range("A65536").End(xlUp).Row).Value

Ensuite j'ai une boucle qui me supprime un certain nombre de ligne
dont je ne veux pas, et qui me met le résultat dans une autre variable
tableau, à une dimension.

J'aimerais ensuite avoir une autre boucle qui ne me concerve qu'une
ligne de chaque doublon.

ainsi de

A
A
A
B
B
A
A
B
B
B
C
C
C
A
A
A

Je voudrais avoir un tableau qui ne me liste que A, B et C.

Est-ce qu'il est possible de lancer de pseudo requete similli SQL sur
des variables tableau (un SELECT DISTINCT serait parfait).

Merci pour votre aide

Cordialement,

F.
Avatar
Fdecourt
Merci JB, cela va effectivement infiniement plus vite....