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 :

Récupérer la plus grande chaîne de caractères commune [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 273
    Points : 91
    Points
    91
    Par défaut Récupérer la plus grande chaîne de caractères commune
    Bonjours à tous et à toutes,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function Domaine(Description As String)
        Dim cell As Range
        Dim Derli_dom As Long, i As Long
     
        Derli_dom = Feuil9.Columns(1).Find("*", , , , , xlPrevious).Row
     
        For i = 2 To Derli_dom
            If Description Like "*" & Feuil9.Range("A" & i).Value & "*" Then
                Domaine = Feuil9.Range("A" & i).Value
                Exit Function
            End If
        Next
     
    End Function
    Mon problème est que lors de cette comparaison il prends la première chaîne de caractère commune, je souhaiterai prendre la plus grande.

    Par exemple je cherche AAA02 et dans ma table j'ai AAA01, AAA02, AA03,... le résultat ici sera AAA01.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour,

    utiliser la fonction Len renvoyant le nombre de caractères d'une chaîne …



    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 273
    Points : 91
    Points
    91
    Par défaut
    Oui mais mon nombre de caractère maximum est variable.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    ben le post commence bien
    il y a une erreur dans ton exemple c'est faux en l'occurrence c'est "AAA0"
    Par exemple je cherche AAA02 et dans ma table j'ai AAA01, AAA02, AA03,... le résultat ici sera AAA01.
    1 question les chiffre qui suivent sont toujours par 01,02,03,04,05 etc...?
    2 pareille les lettre c'est toujours des AAAA...?
    ta pas un exemple dans les conditions reelles
    3 a tu entendu parler des expressions réguliere ??
    réponds a ca et puis on verra
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour à tous ...
    En l'occurrence, le mot "commune " étant le mot "commune", ce ne serait même pas "AAA0", mais "AA0", dans l'exemple montré.
    Une fois de plus : les mots SONT les mots. Ils sont des éléments d'un lexique verbal, de sorte à ce qu'ils soient compris universellement. Le langage, c'est cela : un vecteur de communication. Lorsque l'un donne "sa" signification à un mot et l' "autre", une autre signification, il n'y a plus de conversation/discussion cohérente possible.

    EDIT : je ne serais pas surpris du tout (!!!), bien au contraire, que nous ayons là affaire à un exercice imposé dont l'énoncé lui-même n'a pas été compris, voire analysé.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour unparia oui c'est vrai tu a raison c'est bien ca
    j'était parti sur mon idée et j'ai fait cela
    je vais corriger en créant un boucle lettre dans la quelle j'imbriquerait la boucle chiffre de la même manière et le tour est joué
    maintenant reste a savoir sil il veut la plus longue ( possible) des plus présentes ou simplement la plus présente encore une fois c'est une histoire d'interprétation

    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
    26
    27
    28
    29
    30
    31
    Sub test()
        Dim chaine As String, dico As Object
        chaine = "AAA01 AA02 ABA06 AAAA05 AAA0154 AAA023 AA01456  AAA0271"
        Set dico = CreateObject("scripting.dictionary")
        For i = 1 To 4: chainevalide chaine, dico, "(\D+)+(\d{" & 2 & "})": Next
        n = 0
        For Each elem In dico
            If dico(elem) > n Then n = dico(elem): chaine = elem
        Next
        MsgBox "la chaine commune la plus longue est " & chaine
    End Sub
    Function chainevalide(txt As String, dic, matrice, Optional cas = True) As Variant
        Dim Matches, ReG
        Set ReG = CreateObject("VBScript.RegExp")
        With ReG
            .Global = True: .Pattern = matrice: .IgnoreCase = cas
            Set Matches = .Execute(txt)
            ReDim tablo(Matches.Count): i = 0
            Debug.Print Matches(0)
            For Each Match In Matches
                If Not dic.exists(Trim(Match)) Then
                    dic(Trim(Match)) = 1
                Else
                    dic(Trim(Match)) = dic(Trim(Match)) + 1
                End If
                Debug.Print Trim(Match)
            Next
        End With
     
        Set ReG = Nothing
    End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par Mrfreeze117 Voir le message
    Oui mais mon nombre de caractère maximum est variable.
    Ben justement avec la fonction Len par comparaison juste en chauffant une paire de neurones ‼
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    voila
    Marc "len" je veux bien mais tester quoi?? dans une boucle ? beaucoup trop long !!!!
    régular fait ca pour nous

    surtout que la chaine commune ne commence pas forcement au debut de chaque cells (len,split,mid,etc...=boucle interminable)

    avec regular j'ai brider a 4 caractères par valeur(string/numérique)le tout dans un dico et on cherche le plus grand item

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub test()
        Dim chaine As String, dico As Object
        chaine = "AAA123AAA123AAA01AAA123AA02ABA06AAA123AAAA05AAA123AAA0154AAA23AAA123AA01456AAA0271AAA123AAA123AAA123AAA123"
        Set dico = CreateObject("scripting.dictionary")
        For a = 1 To 4
            For i = 1 To 4
                chainevalide chaine, dico, "(\D{" & a & "})+(\d{" & i & "})"
            Next
        Next a
        n = 1
        For Each elem In dico
            If dico(elem) >= n Then n = dico(elem): chaine = elem
            Debug.Print elem & ":::" & dico(elem)
        Next
    MsgBox "la chaine commune la plus longue est " & chaine
    End Sub
    Function chainevalide(txt As String, dic, matrice, Optional cas = True) As Variant
        Dim Matches, ReG
        Set ReG = CreateObject("VBScript.RegExp")
        With ReG
            .Global = True: .Pattern = matrice: .IgnoreCase = cas
            Set Matches = .Execute(txt)
            ReDim tablo(Matches.Count): i = 0
     
            For Each Match In Matches
                If Not dic.exists(Trim(Match)) Then
                    dic(Trim(Match)) = 1
                Else
                    dic(Trim(Match)) = dic(Trim(Match)) + 1
                End If
                'Debug.Print Trim(Match)
            Next
        End With
        Set ReG = Nothing
    End Function
    ps: si il faut déterminer les ex éco y a qua demander

    re
    je ne l'ai pas mis voila chose faite
    pour transformer ta colonne en chaine string a examiner c'est comme ceci:
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'récupérer une colonne d'un tableau dans un array a 1 dimention join en string
          with activesheet: tableau = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)).Value:end with
        chaine = Join(Application.Transpose(Application.Index(tableau, , 1)), "")
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 273
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour à tous ...
    En l'occurrence, le mot "commune " étant le mot "commune", ce ne serait même pas "AAA0", mais "AA0", dans l'exemple montré.
    Une fois de plus : les mots SONT les mots. Ils sont des éléments d'un lexique verbal, de sorte à ce qu'ils soient compris universellement. Le langage, c'est cela : un vecteur de communication. Lorsque l'un donne "sa" signification à un mot et l' "autre", une autre signification, il n'y a plus de conversation/discussion cohérente possible.

    EDIT : je ne serais pas surpris du tout (!!!), bien au contraire, que nous ayons là affaire à un exercice imposé dont l'énoncé lui-même n'a pas été compris, voire analysé.

    Cela ne pause pas de souci si dans je n'ai pas quelque chose du type AAA011, et dans ma table AAA01, AAA02,..., AAA011. Au quelque cas le résultat au lieux de trouver AAA011 mais AAA01 (car ce sera le premier champ compris dans ma cellule.

    J'ai trouvé ça comme solution:

    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
    Function Domaine(Description As String)
        Dim cell As Range
        Dim Derli_dom As Long, i As Long, cara As Long
     
        Derli_dom = Feuil9.Columns(1).Find("*", , , , , xlPrevious).Row
        cara = 0
        For i = 2 To Derli_dom
            If Description Like "*" & Feuil9.Range("A" & i).Value & "*" Then
                If Len(Feuil9.Range("A" & i).Value) > cara Then
                    cara = Len(Feuil9.Range("A" & i).Value)
                    Domaine = Feuil9.Range("A" & i).Value
                End If
            End If
        Next
     
    End Function
    Qu'en pensez-vous?

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    heu...d'accords
    j'ai l'impression de passer inaperçu moi
    a tu regardé au moins mes propositions

    tu cherche la variable description dans ta plage et après ????!!!!!! un simple find suffit a faire ca, mais ca ne fait pas ce que tu désire
    car pour utiliser ca il faut déjà connaitre la chaine commune ce qui est insensé puisque c'est l'object de ta demande

    en gros ta fonction ne sert a rien

    edit en plus j'avais pas bien vu la recursivité

    comme tu démarre a chaque fois a la même ligne ca te donne le même
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 273
    Points : 91
    Points
    91
    Par défaut
    Désolé mais je ne comprends rien à ta solution, et si ma fonction rempli parfaitement ce que je cherche à faire. Pour utilisé find il aurai fallu que je cherche quelquechose dans une table la c'est l'inverse je teste chaque ligne de ma table pour savoir si oui ou non la ligne de la table est contenue dans ma cellule. Et pour être sur d'avoir la bonne valeur et pas une autre je test le nombre de caractère.

    Après je sais pas si je peux accélérer les choses parce que là j'avoue que c'est un peu long lorsque excel recalcule chaque cellule.

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    chez moi ta fonction ne donne rien
    d'une part déjà tu n'a pas de retour tout reste dans ta boucle

    a quoi bon faire une fonction si elle retourne rien fait une sub
    de mon code en l'état tu n'a rien a modifier tu lance et le message te dit la chaine point barre
    ca te fera un code a potasser les longue nuit d'hiver
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Invité
    Invité(e)
    Par défaut
    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
    26
    27
    28
    29
    30
    31
    Sub test()
    Domaine "aaAA"
    End Sub
    Function Domaine(Description As String)
        Dim Derli_dom As Long, i As Long
      Derli_dom = Feuil9.Range("A" & Cells.Rows.Count).End(xlUp).Row
     Set RS = RequetXls(Description, Feuil9.Range("A2:A" & Derli_dom).Value)
     With Feuil9
         For i = 2 To Derli_dom
            RS.Filter = "Description Like '%" & .Cells(i, "a") & "%'"
            If RS.EOF = False Then .Cells(i, "a") = RS("Cells")
         Next
     End With
    End Function
    Function RequetXls(Description As String, R) As Object
    Const adDouble = 5
    Const adVarChar = 200
    Const adDate = 133
     
     
    Set objRecordSet = CreateObject("ADODB.Recordset")
    objRecordSet.Fields.Append "NBCHAR", adDouble
    objRecordSet.Fields.Append "Description", adVarChar, 255
    objRecordSet.Fields.Append "Cells", adVarChar, 255
    objRecordSet.Open
    For i = 1 To UBound(R)
        objRecordSet.AddNew Array("NBCHAR", "Description", "Cells"), Array(Len(R(i, 1)), Description, R(i, 1))
    Next
    objRecordSet.Sort = "NBCHAR DESC, Cells"
    Set RequetXls = objRecordSet
    End Function
    Dernière modification par Invité ; 03/10/2016 à 23h38.

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    1) Les algos ne manquent pas, parmi lesquels :
    https://en.wikipedia.org/wiki/Longes...string_problem
    http://algorithms.tutorialhorizon.co...mon-substring/
    encore faut-il que l'on parle de la même chose (relire ma première remarque, plus haut)
    2) si les différentes chaînes ne sont pas de la même longueur, il est astucieux de commencer par la chaîne la plus courte de celles présentes. Pourquoi ?
    parce que la chaîne recherchée est au mieux la chaîne la plus courte, puisque les autres sous-chaînes que pourraient contenir d'autres chaines ne sauraient être communes (puisque non dans cette chaîne-là).
    Si cette chaîne existe dans toutes les autres chaînes, c'est elle, la plus longue chaîne commune. Si non, on cherche à partir de là seulement (et pas à partir de tout)
    Là s'arrête ma participation à cette discussion.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour unparia,
    Dans l'exemple donné, le demandeur récupère la le texte le plus long, dès l'instant ou un fragment ce trouve dans la valeur en modèle et ce quelque soit si la Phrase la plus longue existe ou pas dans le modèle!

    Et effectivement c'est n'est pas forcément le but recherché!

    Mais ma méthode permet de surmonter cette difficulté sans problème!
    Vue que la première valeur trouvé sera la bonne mais je dois modifier le filtre dans ce cas la!

    Édite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RS.Filter = "Description Like '%" & .Cells(i, "a") & "%' And  Description Like '%' & Cells &'%'"
    Mais il est vrai que on pourrait rechercher un modèle de produits en fonction de ça racine !
    Dernière modification par Invité ; 04/10/2016 à 08h32.

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour ami Robert
    J'avais bien vu cela.
    D'où mon :
    encore faut-il que l'on parle de la même chose (relire ma première remarque, plus haut)
    Le titre donné à cette discussion est alors maladroit et plus que "questionnable". Le premier message également.
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  17. #17
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 273
    Points : 91
    Points
    91
    Par défaut
    Pour que l'on parle tous de la même chose voici un exemple en fichier.

    dysorthographie: je comprends pas à quoi sert ta fonction :RequetXls

    unparia: Désolé si je n'arrive pas me faire comprendre.

    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  18. #18
    Invité
    Invité(e)
    Par défaut
    c'est pas grave!

    mais au-moins tu l'as testé?

    RequetXls permet de faire une recherche instantané sans boucle ; ça retourne RS!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RS.Filter = "Description Like '%" & .Cells(i, "a") & "%'"
    Dernière modification par AlainTech ; 08/10/2016 à 21h05. Motif: Suppression de la citation inutile

  19. #19
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 273
    Points : 91
    Points
    91
    Par défaut
    Je viens de testé, une fois sur deux ça me fait planter Excel et l'autre fois ça met un temps infini à mettre à jour toute mes cellules.

    Tu as regardé mon fichier? Ma solution a l'air de fonctionner mais est aussi trop lente ( sur 300 lignes) ça mets environ 15s à s'actualiser.

  20. #20
    Invité
    Invité(e)
    Par défaut
    ceci dit tu as raison c'est hyper long!

    Nom : Sans titre.png
Affichages : 1150
Taille : 15,3 Ko

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/09/2011, 11h43
  2. Récupérer la plus grande valeur (select max)
    Par Johnny English dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/01/2009, 16h46
  3. Problème adresse plus grande que 256 caractères
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/06/2008, 16h32
  4. Réponses: 2
    Dernier message: 16/04/2007, 11h53
  5. Réponses: 2
    Dernier message: 20/02/2007, 10h29

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