IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

+ ou - Doublon Cellule !


Sujet :

Macros et VBA Excel

  1. #21
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    eriic
    voila ce que j'obtiens avec ta fonction
    Nom : Capture.JPG
Affichages : 175
Taille : 92,0 Ko


  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 13
    Points
    13
    Par défaut
    C'est ce que je recherche... je viens de tester sur mes 40000 lignes et c'est à peux de choses près nickel !!

    Merci à vous tous...

    Si vous aimez ce genre de défis, on peut perfectionner la chose... sinon c'est bon pour moi....


    Cordialement et merci encore une fois à vous !!

  3. #23
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Re,

    Quelle est la finalité/but final ?

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Re,

    Quelle est la finalité/but final ?
    En gros,

    J'ai un libellé... auquel s'aditionne un conditionnement... pour créer un libellé marketing..

    ex. filet saumon ..... 4x200g ....... filet saumon 4x200g

    Mais pendant un nettoyage.... certaine valeur sont restées dans le premier libellé...

    ex filet saumon 4x20 ...... 4x200g ..... filet de saumon 4x20 4x200g

    Voilà en gros...

    Pour éviter de faire du ligne a ligne et détecter directement les lignes à modifier manuellement...



    Cordialement.

  5. #25
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    on est loin donc de la demande initiale de 2 caracteres max differents en debut/ fin
    bref je ne suis pas sur que cela soit perenne

    tu imagine le nombre de possibilité a traité pour une seule !! chaine

    toto titi riri fifi loulou
    toto titi iri fifi loulou
    toto iti riri fifi loulou
    tot titi riri fifi loulou
    toto titi riri fifi oulou
    toto titi riri fifi loul
    etc... etc.....

    ca marchera pas longtemps ton truc ca c'est sur

    ca donne l'impression que quen tu parle de doublons c'est des mots quasi similaires dans une meme chaine et non de chaine similaires dans plusieurs cellules
    le jour ou tu va tomber sur une eventualité qui n'a pas été prévue ben le resultat sera faux ,va chercher l'erreur toi hein
    perso un truc comme ca sur comme tu a dis + de 40000 lignes je tenterais meme pas !!!!

    il n'y a qu'a regarder cette capture
    Nom : Capture.JPG
Affichages : 129
Taille : 75,3 Ko
    dis moi un peu : la ligne 15 c'est vrai de quoi !!!????????????????????????
    ca veut dire quoi vra pour cette ligne

    bon courage

  6. #26
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Function DoublCellVraiFaux(c As String)
        Dim a, tmp, i As Long, j As Long
        a = Split(Application.Trim(c), " ")
        On Error GoTo fin
        For i = UBound(a) - 1 To UBound(a)
            tmp = ""
            For j = 1 To Len(a(i))
                If Mid(a(i), j, 1) Like "[-,.0-9]" Then tmp = tmp & Mid(a(i), j, 1)
            Next j
            If InStr(tmp, "-") = 0 Then
                a(i) = CDbl(tmp)
            Else
                tmp = Split(tmp, "-")
                If UBound(tmp) > 0 Then
                    For j = 0 To UBound(tmp): tmp(j) = CDbl(Val(tmp(j))): Next j
                    If tmp(1) = "0" Then tmp(1) = ""
                    a(i) = Join(tmp, "-")
                End If
            End If
        Next i
        DoublCellVraiFaux = Left(a(UBound(a) - 1), Len(a(UBound(a)))) = a(UBound(a))
        Exit Function
    fin:
        DoublCellVraiFaux = False
    End Function
    eric

    Edit : ajout traitement d'erreur

  7. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    @eriic
    meme resultat que la précedente tout est vrai
    vrai de quoi ca.... (that the question)
    Nom : Capture.JPG
Affichages : 163
Taille : 203,3 Ko

  8. #28
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 13
    Points
    13
    Par défaut
    @patrick

    Remarque très pertinente que je comprends bien mais rien que le fait de pouvoir enlever 38000 lignes sur 40000 me fait déjà gagner un temps de fou...
    Même si quelques une renvoie "Vrai" mais ne le sont pas vraiment, je le remarquerais lors de mon traitement manuel...

    @eriiic

    c'est encore mieux !!


    Merci.

  9. #29
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Patrick,
    "... 20g 2blablabla" est VRAI car les 2 derniers mots contiennent au moins un nombre, le 2nd étant le début du premier.
    g et blablabla sont éliminés car sont considérés comme étant les unités.

    Par contre "tyy tdyrtyrty rftty 50" et "tyy tdyrtyrty rftty" seront FAUX car il manque au moins un nombre dans les 2 derniers mots. Difficile de dire si c'est dû à la troncature et normal ou non.
    Un oeil d'expert doit décider.
    Si besoin on pourrait mettre VRAI si 0 nombre, mais comme le demandeur n'a pas signalé ce cas comme possible et qu'il y voudrait VRAI, inutile d'ajouter une ligne de code pour l'instant
    eric

  10. #30
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    oui eriic j'ai fini par comprendre ce que voulais le demandeur
    il aurait parler de segment de chaine répétés j'aurais pigé tout de suite doublons pour moi c'est entre 2 cellules

    si la premiere fourchette de grammage de chaque produit termine par un "g" je dis bien la premiere
    Libellé long M
    Pavé de dindonneau précuit 120-130g 120-130g
    Petit beurre 20g 20g
    Filets de flétan 700-1000g 700-1000g
    vé de dindonneau précuit 120-130g 120-130g
    Filet de saint-pierre 170-220g 170-22
    Filet de plie pané 180-200g 180-200g
    Petit beurre 20g 2
    Pavé de dindonneau précuit 120-130g 120-13
    Burger de poisson pané 150g 150
    vé de dindonneau précuit 120-130g 120-130g
    Fish stick pané 100g g100
    Persil en feuille 120g 12
    Planchette de colin d'alaska sans arêtes 100g 0100g
    Petit beurre 20g 20g

    2 ou 3 lignes de code suffise a repérer la répetition de la chaine de grammage

    parti de la il peut meme remasteuriser sa colonne avec la chaine netoyée
    et combien meme il n'y aurais pas le "g"
    on repere la premiere portion comportant un numerique avec split et on garde la zero et 1 et c'est tout on ragjoute le "g" si il est absent a la fin

    c'est son principe meme du true/false dans la colonne "B" qui me perturbe a quoi ca sert ?
    un futur traitement ??: autant le faire tout de suite puisque l'on a la chaine valide dans son integralité (split(c,"g")(0) & split(c,"g")(1))


  11. #31
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    split(c,"g")(0) & split(c,"g")(1) ?
    Au delà du fait qu'avec un seul g on récupère c (?), il ne faut pas d'anguille aux rutabagas et ses petits légumes au menu ;-)

    Je pense qu'il veut comparer justement les 2 fourchettes de nombres. 25g 50g sera FAUX
    Mais c'est vrai qu'il n'a pas fourni d'exemples faux pour bien appréhender

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    je sais pas mais il parle de pouvoir supprimer 38000 ligne sur 40000
    ok

    perso je ferait un netoyage de la chaine et un removeduplicate de la colonne "B"

    Nom : Capture.JPG
Affichages : 117
Taille : 191,8 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function correction_code(c)
        Dim tbl, num As Long, codchar$, it
        tbl = Split(c, " ")
        For i = LBound(tbl) To UBound(tbl)
            it = Replace(Replace(tbl(i), "g", ""), "-", "")
            If it Like "*[0-9]*" Then num = num + 1
            If num > 1 And Not tbl(i) Like "*[0-9]*" Then num = 0
            If num < 2 Then codchar = codchar & tbl(i) & IIf(IsNumeric(it) And Right(tbl(i), 1) <> "g", "g ", " ")
        Next
        correction_code = codchar
    End Function
    formule
    =correction_code(A2)
    c'est propre net

  13. #33
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    c'est propre net
    et dans la foulée totalement rassurant pour les amoureux de régimes "light" puisque "sachet de 5 fonds d'artichaut 120g 140g" deviendrait ainsi "sachet de 5g fonds d'artichaut"

  14. #34
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Pour moi il ne parle pas de supprimer, mais d'en avoir moins à contrôler.
    Et il a g ou gr, d'où les 1 ou 2 caractères demandés au début.

  15. #35
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    tu biaise la unparia

    d'apres ce que j'ai compris la fourchette de grammage est separé par un tiret la tu a mis nom pas une fourchette mais 2 grammages differents
    sachet de 5 fonds d'artichaut 120g 140g

    mais ca fait rien ca montre bien ce que je disais il y a tellement de possibilité qu'avant qu'on les prennent toutes en compte et bien il va y revenir souvent vu le nombre de lignes


  16. #36
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    la fourchette de grammage est separé par un tiret
    tiret ou pas tiret -->> serait traduit par "sachet de 5g fonds d'artichaut" avec ton code
    Pour le reste, à savoir :
    ca montre bien ce que je disais il y a tellement de possibilité qu'avant qu'on les prennent toutes en compte et bien il va y revenir souvent vu le nombre de lignes
    -->> totalement d'accord. Aucune solution totalement fiable avec un tel contexte.

  17. #37
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    voila pour ta potée de artichaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function correction_code(c)
        Dim tbl, num As Long, codchar$, it, gram$
        tbl = Split(c, " ")
        For i = LBound(tbl) To UBound(tbl)
            If tbl(i) Like "*[0-9]*" And Right(Trim(tbl(i)), 1) = "g" Then gram = tbl(i)
            it = Replace(Replace(tbl(i), "g", ""), "-", "")
            If it Like "*[0-9]*" And gram <> "" Then num = num + 1
            If num > 1 And Not tbl(i) Like "*[0-9]*" Then num = 0
            If num < 2 Then codchar = codchar & tbl(i) & " "
        Next
        correction_code = codchar
    End Function
    Nom : Capture.JPG
Affichages : 130
Taille : 207,4 Ko

  18. #38
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Re,

    Je suis qd même bien content d’avoir posé la question du but final !!!
    On en revient toujours à la même chose lors d’une ouverture de discussion, à savoir le manque de précisions,
    et donc avoir en début de discussions tous les tenants et aboutissants, ainsi que le but final.

    Surtout, et malheureusement pour moi, j’ai moins de temps, et depuis aussi je préfère coder sur des explications claires, sinon je fais préciser; en tout cas, j’essaie de me tenir à cette façon de faire …

    En tou cas vu la tournure, je pense qu’un tri au préalable est obligatoire afin de faciliter la suite du travail …

  19. #39
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Sauf que ce n'est pas ce qui est demandé.

    Peut-être veut-il traiter manuellement les anomalies de ce type :
    Persil en feuille 120g 150g
    ou
    Persil en feuille 120g
    eric

  20. #40
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Re,

    @kev6540
    A voir si par formule cela peut t'intéresser (Formule à étendre - si on veut garder l'ordre au final, prendre une colonne supp. pour indiquer la ligne ou se trouve le texte) :

    Nom : TRI poids.png
Affichages : 121
Taille : 44,6 Ko

    Possibilité de tri ou de concaténation ou d'une formule supp en colonne de droite(F), voir peut être si c'est possible un filtre élaboré ou simplement un petit code VBA sur les colonnes qui intéressent …

    DONNEES DE DEPART PRODUIT POIDS GLOBAL POIDS 1 POIDS 2
    Pavé de dindonneau précuit 120-130g 120-130g Pavé de dindonneau précuit 120-130g 120-130g 120-130g 120-130g
    Petit beurre 20g 20g Petit beurre 20g 20g 20g 20g
    Filets de flétan 700-1000g 700-1000g Filets de flétan 700-1000g 700-1000g 700-1000g 700-1000g
    Filet de saint-pierre 170-220g 170-22 Filet de saint-pierre 170-220g 170-22 170-220g 170-22
    Filet de plie pané 180-200g 180-200g Filet de plie pané 180-200g 180-200g 180-200g 180-200g
    Burger de poisson pané 150g 150 Burger de poisson pané 150g 150 150g 150
    Fish stick pané 100g g100 Fish stick pané 100g g100 100g g100
    Persil en feuille 120g 12 Persil en feuille 120g 12 120g 12
    Planchette de colin d'alaska sans arêtes 100g 1100g Planchette de colin d'alaska sans arêtes 100g 1100g 100g 1100g
    Persil en feuille 120g Persil en feuille 120g A VERIFIER ou OK ou LAISSER VIDE ?? A VERIFIER ou OK ou LAISSER VIDE ??


    DONNEES DE DEPART PRODUIT POIDS GLOBAL POIDS 1 POIDS 2
    Pavé de dindonneau précuit 120-130g 120-130g =GAUCHE(A2;MIN(TROUVE({0.1.2.3.4.5.6.7.8.9};A2&"0123456789"))-1) =DROITE(A2;NBCAR(A2)-MIN(TROUVE({0.1.2.3.4.5.6.7.8.9};A2&"0123456789"))+1) =SIERREUR(GAUCHE(C2;TROUVE(" ";C2;1)-1);"A VERIFIER ou OK ou LAISSER VIDE ??") =SI(ESTERREUR(GAUCHE(C2;TROUVE(" ";C2;1)-1));"A VERIFIER ou OK ou LAISSER VIDE ??";STXT(C2;NBCAR(D2)+2;NBCAR(C2)))

    Wait and see …

Discussions similaires

  1. [XL-2016] Doublon cellules sur autre feuille
    Par valen40 dans le forum Excel
    Réponses: 12
    Dernier message: 20/09/2016, 22h51
  2. [XL-2003] Alerte doublons cellules
    Par titoffe60 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/04/2014, 17h28
  3. Couleur cellule en cas de doublon
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/08/2008, 14h53
  4. combobox sans doublon (colonne de reference avec cellule vide)
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/04/2008, 17h08
  5. [VBA-E] Liste sans doublons pour remplir cellule
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/06/2007, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo