Tourver les lignes en doubles

marsienfr75

XLDnaute Junior
Bonjour,

J'utilise Excel 2000 pour gérer ma collection de cartes postales de Paris lors de différentes crue de la Seine.

Il y en a plusieurs milliers pour celle de 1910.

J'ai fait un document exprès pour le joindre, en enlevant toutes les données sensibles !

Je ne sais trop où apporter les précisions utiles à la compréhension. J'utilise les premières lignes pour arriver à me comprendre et me souvenir du contenu souhaité dans une colonne : ce contenu vous suffira peut être assez ?

Je suis incapable d'utiliser une macro : je ne sais par où commencer ! Il y a 20 ans, j'ai fait une formation de 5 mois pour devenir analyste-ptogrammeur sur Gros-système : j'ai réussi la formation mais totalement échoué pour trouver un emploi ! La programmation structurée (enfin les principes) est la seule chose qui m'en reste. J'aurais bien aimé savoir faire un TANT QUE !

Je comprends plutôt vite sauf lorsqu'il y a un malentendu au départ.

Je souhaiterais vivement me débrouiller par moi même plutôt que me sentir être un assisté !

Je ne manque pas de questions : mais je n'en pose qu'une seule ! Avant de redemander, je vais chercher à comprendre, j'insiste, je préfère faire que dépendre d'autrui, d'autant que vos contributions sont bénévoles et abuser : je n'aimerais pas que l'on abuse de moi alors ... !

Cordialement, Didier.

PS : je ne suis pas parvenu à joindre le fichiers : trop gros, titre trop long, ou ???
 

marsienfr75

XLDnaute Junior
Re : Tourver les lignes en doubles

J'ai trouvé l'icône permettant de joindre un fichier.
Je l'ai ouvert, j'ai renseigné l'adresse du document (sur mon bureau) (j'ai donc rempli la partie "Ajouter un fichier à partir de votre ordinateur")
Après, j'ai cliqué sur "Envoyer" puis sur "Fermer cette fenêtre".

Plus facile de savoir où est le problème avec des détails !

Didier
 

marsienfr75

XLDnaute Junior
Re : Tourver les lignes en doubles

Bonjour
si tu veux de l'aide, tu postes un fichier avec 10 lignes
et tu mets dans un seconde feuille le résultat que
tu veux obtenir
sinon personne ne viendra à ton secours
cordialement
Flyonets

Résumer presque 7 000 lignes en une dizaine : impossibilité de tester la proposition tant il y a de cas particuliers et c'est un des problèmes majeurs : comment faire la différence (lorsque 'il y a un titre tout en majuscule ou non, lorsqu'il peut être sur une seule ou sur 2 ....)
Exemples :
Une carte où le titre est RUE TARTENPION est différente de celle noté Rue Tartenpion ;
De même pour
"Rue Tartenpion dans le quartier Gentil" avec :
"Rue Tartenpion
dans le quartier Gentil"

Didier.

A 140 lignes (en ayant enlevé en plus des colonnes) Taille = 261 Ko < 293 Ko maxi ! Réussi à joindre mon fichier !

La feuille "éditeurs" est la liste des éditeurs que je connais. Elle est indispensable !
 

Pièces jointes

  • CP crues Paris pour site Excel.xls
    261 KB · Affichages: 62
Dernière édition:

KenDev

XLDnaute Impliqué
Re : Tourver les lignes en doubles

Bonjour à tous,

Une carte où le titre est RUE TARTENPION est différente de celle noté Rue Tartenpion ;
De même pour
"Rue Tartenpion dans le quartier Gentil" avec :
"Rue Tartenpion
dans le quartier Gentil"


Une piste :
Code:
LCase(WorksheetFunction.Trim(Replace(mavariabletexte, vbLf, " ")))
ou
Code:
LCase(Trim(Replace(mavariabletexte, vbLf, " ")))

on remplace le saut à la ligne par un espace.
on retire les espaces superflus à gauche et à droite et les éventuels multiples espaces entre deux mots sont remplacés par un seul espace. Trim version seul (sans WorksheetFunction) ne s'occupe que de gauche et droite.
Lcase met tout en minuscule.
Les 4 exemples deviennent :
_ rue tartenpion (1 & 2)
_ rue tartenpion dans le quartier gentil (3 & 4)

Cordialement

KD
 

marsienfr75

XLDnaute Junior
Re : Tourver les lignes en doubles

Bonjour Ken,

Félicitations, vous avez trouver la bonne idée : je cherche bien des pistes (je ne souhaite pas consommer des aliments prédigérés !).

Il me semble que la fonction "LCase" est à l'opposée du résultat que je recherche ! J'ai besoin de faire la distinction entre majuscule et minuscule : un titre tout en majuscule est différent de celui utilisant des minuscules !
Je considère une carte, avec un titre sur une ligne, différente de la même avec le titre sur 2 lignes.

Mon titre (reportant celui sur la carte) allant du premier caractère à gauche au dernier caractère à droite : la fonction "Trim" ne me parait pas pouvoir répondre à mon souhait.

Un grand merci pour votre contribution.

Cordialement, Didier.

PS : si c'était une base de données commerciales : comment trouver des articles en doublon ?
 

KenDev

XLDnaute Impliqué
Re : Tourver les lignes en doubles

Re,

Désolé, j'ai donc compris de travers. Sur quels critères allez vous vous basez pour définir que deux lignes sont en doublon ? Si je comprends bien, - pas gagné -, vous n'envisagez pas de données "corrompues" dans votre tableau, votre tableau est par définition correct ?

Si c'est le cas et que le tableau est de taille raisonnable (7000 lignes me semble raisonnable si il s'agit d'une opération ponctuelle ou peu fréquente) pourquoi ne pas boucler simplement :

Pour chaque ligne on compare à toutes les lignes situées dessous. On passe à la 2ème etc... Et on note les lignes doublons dans un tableau. Par exemple si 2 lignes sont en doublon quand les colonnes 3 , 7 et 9 sont identiques :

Vite fait et à main levée (donc pas de balises)

c=0
for i = 1 to 7000
s = cells(i,3) & cells(i,7) & cells(i,9)
for j = i+1 to 7000
t = cells(j,3) & cells(j,7) & cells(j,9)
if s=t then
c=c+1
redim preserve TableauDoublon(1 to c)
TableauDoublon(c)=j
exit for 'pas la peine de continuer puisque la ligne j sera plus tard une ligne i
end if
next j
next i

TableauDoublon devrait contenir en sortie toutes les lignes doublons d'une précédente située plus haut.

Cordialement

KD
 

marsienfr75

XLDnaute Junior
Re : Tourver les lignes en doubles

Re,

Désolé, j'ai donc compris de travers. Sur quels critères allez vous vous basez pour définir que deux lignes sont en doublon ? Si je comprends bien, - pas gagné -, vous n'envisagez pas de données "corrompues" dans votre tableau, votre tableau est par définition correct ?

J'ai du mal à me comprendre moi même alors "je ne jette pas la pierre" !

Je parle de CP (abréviation de carte postale) : ce sont des photos à l'origine ; plusieurs éditeurs peuvent avoir utilisés la même. Bien que ce soit la même photo, je les considèrent comme différentes (j'utilise la colonne T que j'intitule "synonyme" afin de me permettre de faire le lien entre ces mêmes photos.

Je devrais peut être formuler ma question d'une manière différente : dans une liste (pouvant être modifier : je pense à la fonction "Données" puis "Trier" dans une colonne permettant ainsi de modifier l'ordre ! Les lignes identiques 502 et 2550 vont changer de place : Je cherche à trouver les doublons : je ne trouve meilleur mot ! La seule corruption des données serait le résultat d'une de mes erreurs !

J'ai des doubles, certaines CP, je connais leur existence. Que de cas ! La colonne M où je note X sur la première ligne (de titre pour moi : la ligne 1) : non ce n'est pas une inconnu, le X représente le symbole de la multiplication : supérieur à 0 : j'ai, inférieur ; je n'ai pas (je voudrais l'acheter) ; lorsqu'il y a une virgule, (je viens de commencer une modification) le ",1" indique le fait que cette CP est écrite (ou plus précisément qu'elle n'est pas "vierge" qualifié une CP agé de 100 ans comme étant neuve ... !). Puis le "-1" je ne connais pas de vendeur, "-2" je connais un vendeur !
(+)1 CP à garder, et 2 = double (possibilité de céder).

Si c'est le cas et que le tableau est de taille raisonnable (7000 lignes me semble raisonnable si il s'agit d'une opération ponctuelle ou peu fréquente) pourquoi ne pas boucler simplement :

Pour chaque ligne on compare à toutes les lignes situées dessous. On passe à la 2ème etc... Et on note les lignes doublons dans un tableau. Par exemple si 2 lignes sont en doublon quand les colonnes 3 , 7 et 9 sont identiques :

Vite fait et à main levée (donc pas de balises)

c=0
for i = 1 to 7000
s = cells(i,3) & cells(i,7) & cells(i,9)
for j = i+1 to 7000
t = cells(j,3) & cells(j,7) & cells(j,9)
if s=t then
c=c+1
redim preserve TableauDoublon(1 to c)
TableauDoublon(c)=j
exit for 'pas la peine de continuer puisque la ligne j sera plus tard une ligne i
end if
next j
next i

TableauDoublon devrait contenir en sortie toutes les lignes doublons d'une précédente située plus haut.

Cordialement

KD

J'aime beaucoup la piste que vous me proposez ; reste à l'adapter convenablement !

Je note que le message publié ne montre pas les "tabulations" indiquées dans votre message ! Tout se retrouve centré à gauche sur ce forum ! En éditant le message, les tabulations sont présentes : ne pas tomber dans ce "piège", Ken, je ne m'adresse pas à vous mais aux autres lecteurs.
 

Discussions similaires

Statistiques des forums

Discussions
312 360
Messages
2 087 593
Membres
103 604
dernier inscrit
CAROETALEX59