Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 30/06/2009, 22h12   #1
Nouveau membre du Club
 
Date d'inscription: avril 2009
Messages: 67
Par défaut Trouver une chaine de caractère

Bonjour Forum,

je reviens avec un besoin d'être plus précis dans ce sous programme ou l'on recherche la présence d'une chaine caractère dans colonne contenant des abréviations. Le problème est qu'il trouve toute les occurences et que je voudrais seulement ceux qui débutent par cette chaine de caractère.

exemple : recherche RA : trouve RA, ICRA, FRA .

Code :
Function NbOccurrences(ByVal strMot As String) As Integer

' strMot : Mot recherché

Dim i As Integer
Dim Xls As Worksheet
Set Xls = ThisWorkbook.Worksheets("Résultats")
Set c = Xls.Columns(6).Find(strMot, LookIn:=xlValues, lookat:=xlPart)

    If Not c Is Nothing Then
        firstAddress = c.Address
        fmInterfaceSec.ListView2.ListItems.Clear
        Do
         '   MsgBox (c.Address)
            With fmInterfaceSec.ListView2
                .ListItems.Add , , Xls.Cells(c.row, 6) ' abrev
                ...etc...
                End With
               Set c = ActiveSheet.Columns(6).FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
End Function
je crains de devoir les vérifier un à un...et je ne vois pas comment

Merci de votre aide

Bo
Bocage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 22h43   #2
Membre actif
 
Date d'inscription: octobre 2007
Localisation: 29
Messages: 176
Par défaut

Bonsoir,

Est-ce que les mots recherchés sont en premier, dans la cellule, ou peuvent être situés n'importe où dans celle-ci?

Et s'ils sont situés n'importe où, ont-ils un espace avant?

A te relire
mapeh est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 22h49   #3
Nouveau membre du Club
 
Date d'inscription: avril 2009
Messages: 67
Par défaut

Bonsoir Mapeh, forum

la chaine de caractère recherchée se situe tjrs au début de l'abréviation.

Bo
Bocage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 23h32   #4
Membre actif
 
Date d'inscription: octobre 2007
Localisation: 29
Messages: 176
Par défaut

Re-,

essaie ainsi, à mettre dans un module standard...

Code :
Public Recherches As Object
Sub Cherche()
NbOccurrences "RA"
If Recherches.Count = 0 Then Exit Sub
With Sheets("Résultats")
    temp = Application.Transpose(Recherches.Items)
    fmInterfaceSec.ListView2.ListItems.Clear
    If Recherches.Count = 1 Then
        fmInterfaceSec.ListView2.ListItems.Add , , .Cells(temp(x), 6).Value ' abrev
    Else
        For x = LBound(temp) To UBound(temp) - 1
            fmInterfaceSec.ListView2.ListItems.Add , , .Cells(temp(x, 1), 6).Value ' abrev
        Next x
    End If
End With
End Sub
 
Function NbOccurrences(ByVal strMot As String) As Integer
Dim Lig As Long, Derlig As Long, Lig2 As Long
Dim Xls As Worksheet
 
Set Recherches = CreateObject("Scripting.Dictionary")
Set Xls = ThisWorkbook.Worksheets("Résultats")
 
On Error Resume Next
With Xls
    Derlig = .[F65000].End(xlUp).Row
    Lig = Application.Match(strMot & "*", .Columns(6), 0)
    If IsError(Lig) Then Exit Function
    Recherches.Item(Lig) = Lig
    While Err.Number = 0
        Lig2 = Application.Match(strMot & "*", .Range(.Cells(Lig + 1, 6), .Cells(Derlig + 1, 6)), 0)
        Recherches.Item(Lig2 + Lig) = Lig2 + Lig
        Lig = Lig2 + Lig
    Wend
End With
End Function
 
mapeh est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 17h59   #5
Nouveau membre du Club
 
Date d'inscription: avril 2009
Messages: 67
Par défaut Re --

Bonjour Mapeh, Forum,

Merci pour le code, le tout a fonctionné avec quelques ajustements, et une plus longue période de temps à comprendre le tout..Fort la transposée.

le résultat d'une recherche de "CA" a donné tous les abrév qui débutent par CA mais aucun CA à l'intérieur d'une abrév. Ce qui un grand pas.

Je vais voir comment ajouter une condition pour raffiner encore.

Merci et A+

Bo
Bocage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 10h09   #6
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

Bonjour,
Une méthode pour trouver les chaine de caractère ou quelle soit (début, milieu ou fin")

Code :
 
Function NbOccurrences(ByVal strMot As String) As Integer
Dim i as long, DerniereLigne  as long
DerniereLigne = Worksheets("Résultats").Range("A65536").End(xlUp).Row 'donne la dernièreligne de la colonne A remplace le A par ta colonne
NbOccurrences=0
For i = 2 to DerniereLigne  'on parcour de la ddeuxième a la dernièreligne
If Worksheets("Résultats").cells(i,1) like "*" & strMot  & "*" then 'si il y a RA dans la cellule
    NbOccurrences=NbOccurrences+1
end if
next i  
end function
Tu peux aussi utilisé find qui sera plus rapide
Si la recher doit se faire dans le premier mot seulement de la cellule

Code :
If split(Worksheets("Résultats").cells(i,1)," ")(0) like "*" & strMot  & "*" then
Krovax est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 15h41   #7
Nouveau membre du Club
 
Date d'inscription: avril 2009
Messages: 67
Par défaut Re ---

Bonjour Mapeh, Krovax, forum,

Tout fonctionne super bien. Merci encore...

Bo
Bocage est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 10h32.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.