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 :

Aide pour mon PFE


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut Aide pour mon PFE
    Bonjour à tous,

    J'ai besoin de vous pour m'aider à compléter un programme pour mon projet de fin d'études!

    Dans une feuille j'affiche les résultats d'une recherche d'article. Je souhaite créer une fonction pour affiner ma recherche.
    Dans une textbox :
    Si tu trouve le mot-clé dans la cellule, rien
    Si tu ne trouve pas le mot-clé dans la cellule tu me supprime toute la ligne


    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
     
    Private Sub CommandButton1_Click()
    Dim cellulecherche2 As Range
    Dim j As Integer
     
     
    With Worksheets("Recherche").Range(Cells(14, 2), Cells(200, 2))
     
            Set cellulecherche2 = .Find(what:="*" & TextBox1 & "*", LookIn:=xlValues)
                Set cellulecherche2 = .FindNext(cellulecherche2)
                For j = 14 To 200
                    If Cells(j, 2).Value <> cellulecherche2 Then
                        Cells(j, 2).EntireRow.Delete
                    End If
                Next j
     
    End With
    Unload UserForm2
    End Sub
    Merci @+

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Mais de rien,
    ce fut un plaisir de ne pas répondre.
    En même temps ca serait pas mal d'expliquer ce qui ne te convient pas dans ton programme, bug, résultat incohérent....

    Première chose tu parcours tes colonnes de haut en bas regarde cette exemple
    on a 4 lignes

    AAA0
    BBB0
    CCC0
    DDD1

    on supprime les lignes avec un 0 a la fin
    i=1 on supprime la ligne 1 AAA0
    on a

    BBB0
    CCC0
    DDD1

    i=2 on test la deuxième ligne CCC0
    on la supprime
    il nous reste

    BBB0
    DDD1

    on teste la troisième et ma quatrième ligne sans modifier le résultat. Et la tu vois bien que cela coince.
    il faut parcourir les colonne de la dernière ligne a la première
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For j =  200 to 14 step -1
    Autre chose je suppose que 200 est une valeur arbitraire, ca serait beaucoup plus pratique de te limiter a la dernière ligne rempli non?
    Regarde ces exemples
    http://www.developpez.net/forums/d45...gnees-feuille/

    Essaye déjà de faire ceci, et si ca ne suffit pas explique un peu ton problème

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    Ok oui c'est vrai que j'ai rien expliquer.

    Merci pour le step -1, ça marche déjà mieux!!Héhé!

    Comment puis-je lui dire de ne pas s'arrêter à la première valeur qu'il trouve ?
    Pour l'instant, seule la première ligne trouvée est conservée.

    Merci.

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    je ne comprend pas.
    Tu cherche une mot clef il corespond a une référence tu supprmie toutes les ligne qui n'ont pas cette référence. Si tu cherche un nouveau truc tu aura une autre référence du coup tu supprimes ce que n'a pas cette référence la donc tout ce' qui te restais. A la fin tu n'as plus rien.

    A mon avis commence par bien réfléchir a ce que tu veux faire (ou alors bien l'expliquer) et ensuite on avisera. Si c'est pour ton PFE je pense que ce n'est pas trop te demander

  5. #5
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    Ouep t'a raison, alors

    J'ai fais une recherche pour trouver le mot "A", voici les résultats :
    AA1
    AB2
    AC3
    AD1

    Si j'ai trop de réponses, je créer une userform où j'ajoute un mot-clé. Par exemple "1".

    Je veux juste donc avoir comme résultat : AA1 et AD1

    Pour l'instant il ne me trouve qu'une seule valeur.

    Voilà pour les explications,
    merci et @+

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Je ne vais pas le faire a ta place (si quelqu'un veux s'en occuper je passe la main) mais on peu essayer d'y réfléchir ensemble car visiblement soit tu ne donne que des bride d'information soit tu n'as qu'une idée très vague de ce que tu veux faire et aucune idée de l'algorithme.

    Tu veux effectuer une recherche, si il y a plusieurs solution possible alors proposer d'affiner la recherche jusqu'a n'avoir qu'une solution, c'est bien ca?

    Donc dans un premier temps tu fait la fonction de recherche et tu comptes le nombre de résultat, ensuite en fonction de ce nombre soit tu balance l'algo précédent soit tu affine la recherche jusqu'a n'avoir qu'une solution et balancé ton algo.

    Mais la on s'éloigne méchamment du problème de VBA là le souci me semble venir du fait que tu veux coder avant de réfléchir

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Dans ce cas, adaptes le code proposé par Krovax comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
               For j =derniereligne to 14 Step -1
                    If InStr(Cells(j, 2).Value, TextBox1)=0 Then
                        Rows(j).Delete
                    End If
                Next j

  8. #8
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    Dsl mercatog, mais ça marche carement pas...il me supprime tout

  9. #9
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ah! Bon
    Tu en es sûr? ou à la hâte?
    NE SOIS JAMAIS DSL

    REGARDE FICHIER CI JOINT
    Dans la colonne 2, j'ai des cellules du genre :
    bloc creux 10x20x50 nf sepa
    bloc creux 15x20x50 nf sepa
    bloc creux 10x20x50 nf sepa direct usine
    bloc creux 15x20x50 nf sepa direct usine

    si je cherche "usine", je veux supprimer les deux premières lignes
    Supprime toutes les lignes ne contenant pas le mot sélectionné dans TextBox1

    Et ici code amélioré,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Valid_Click()
    Dim derniereligne As Long
    Dim j As Long
     
    derniereligne = Range("B65000").End(xlUp).Row
     
    For j = derniereligne To 14 Step -1
        If InStr(1, Cells(j, 2).Value, Trim(CStr(TextBox1.Value)), 1) = 0 Then
            Rows(j).Delete
        End If
    Next j
    USF.Hide
    End Sub

  10. #10
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    le code est bon par contre tu doit avoir la chaine de caractère présente dans la cellule et avec les bonne majuscule minuscule sinon met
    en tête du module

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. aide pour mon PFE
    Par wayde dans le forum UML
    Réponses: 2
    Dernier message: 16/02/2012, 15h31
  2. aide pour mon PFE "étude préalable"
    Par mahmoudb dans le forum Sujets
    Réponses: 0
    Dernier message: 12/02/2012, 00h55
  3. [MySQL] Demande d'aide pour mon PFE
    Par angello2299 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/04/2011, 12h00
  4. Besoin d'aide pour mon PFE, s'il vous plait
    Par mouss2522 dans le forum Sujets
    Réponses: 1
    Dernier message: 11/04/2011, 22h11
  5. AIDE pour mon PFE : Local IDS en c#
    Par sadokc dans le forum C#
    Réponses: 1
    Dernier message: 20/05/2007, 14h04

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