Recherche d'une partie d'une cellule

Résolu
Reizo Messages postés 17 Statut Membre -  
Reizo Messages postés 17 Statut Membre -
Bonjour,

J'ai réussi à me faire une petite macro en vba pour excel qui me sert a rechercher et copier des lignes dans une nouvelle feuille quand il trouve que deux cellules sont identiques.

Voila mon problème, je voudrais pouvoir faire en sorte que ce que je recherche ne soit pas identique mais soit une partie plus grosse contenant mon terme de recherche et que ça copie la ligne quand même.

Pouvez vous m'aider ?

9 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Voir ma réponse sur ce poste
    Voir aussi avec la fonction *Lyke*
    A+
    1
  2. Reizo Messages postés 17 Statut Membre
     
    Rebonjour,
    En fait j'avoue que j'arrive pas vraiment à adapter ça à mon code bien que je comprenne le principe, si ça peut t'aider le voila (avec quelques commentaires) :

    Private Sub CommandButton1_Click() 'Ceci est juste la définition de la fonction de recherche, le nom importe peu
    
        Dim iR As Long 'iR est l'indice de ligne recherchée, cette variable change dans la première boucle (elle passe en revue les lignes de Donery de 2 à 30000 sur la quatrième colonne)
    
        Dim iAV As Long 'Ceci est la ligne dans laquelle le résultat de la recherche sera collé sur une nouvelle feuille
        
        Dim iL As Long 'iL est l'indice de la ligne utilisée pour la recherche, cette variable change dans la deuxieme boucle
    
    	Dim L1 As Long 'L1 est la ligne jusqu'à laquelle la premiere boucle parcourt le tableau
    	
    	Dim L2 As Long 'L2 est la ligne jusqu'à laquelle la deuxieme boucle parcourt le tableau
        
        Dim R As Worksheet 'Définition de la variable R comme étant une feuille excel
    
        Dim AV As Worksheet 'Définition de la variable AV comme étant une feuille excel
    
        Set R = Worksheets("Donery")  'Feuille de l'entreprise
    
        Set AV = Worksheets("Feuil1") 'Nouvelle feuille
        
        Set EQ = Worksheets("Equivalences") 'Feuille d'où provient la donnée de recherche
    	
    	L1 = 18535
    	
    	L2 = 310
     
        iAV = 2
        
        iL = 1
        
        For iR = 2 To L1
            
            For iL = 2 To L2
    
            If R.Cells(iR, 4) = EQ.Cells(iL, 2) Then
    
                R.Range(iR & ":" & iR).Copy AV.Cells(iAV, 1)
                
                iAV = iAV + 1
    
            End If
            
            Next
    
        Next
    
    End Sub
    0
  3. Reizo Messages postés 17 Statut Membre
     
    A la limite quelqu'un pourrait-il m'expliquer ce que fait ce bout de code exactement ?

            R.Range("D2:D18535").AutoFilter Field:=1, Criteria1:="=*" & Mot & "*", _ 
                Operator:=xlAnd
    0
  4. Reizo Messages postés 17 Statut Membre
     
    ça me parle plus d'utiliser la fonction "Like" mais je ne sais pas comment l'utiliser ici
    "  If R.Cells(iR, 4) = EQ.Cells(iL, 2) Then"
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    La solution à ton problème est plutôt avec AutoFilter,
    mais Mot est une variable que tu dois initialiser.
    Par exemple Mot = "Truc"
    Tu lance la macro et toute les lignes dont la cellule de la colonne D NE CONTIENT PAS Truc seront cachées.
    Si tu à un titre en D1 ta plage doit commencer à D1:
    En fait cette fonction emploi Lyke mais tout le code nécessaire est compris dedans.
    A+
    0
  7. Reizo Messages postés 17 Statut Membre
     
    Merci de ton aide je vois ça :)
    0
  8. Reizo Messages postés 17 Statut Membre
     
    j'avais initialisé Mot comme ça :

    Mot = EQ.Cells(iL, 7)

    j'y arrive pas avec Autofilter même en regardant comment ça marche sur les docus excel et trucs comme ça
    0
  9. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Rectificatif :
    C'est pas Lyke mais Like
    Et si tu veux que la recherche ne tienne pas compte des minuscule/majuscule tu met en haut du module
    Option Compare Text


    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
  10. Reizo Messages postés 17 Statut Membre
     
    Oui ça je savais mais j'y arrive pas quand même, je crois que je vais rentrer chez moi et me prendre une bonne douche avant d'y repenser demain
    0