Problème avec ma fonction Left

Tempio

XLDnaute Occasionnel
Salut à tous, j'ai un souci avec la fonction Left (qui me renvoie les 1er caractères à gauche d'une chaine). En fait, je fais la comparaison avec un texte ayant des espaces.

Par exple j'aimerais avoir les initiales "DG" de la chaine "DG / CA / MED". Pouriez vous m'aider s'il vous plait ? Merci d'avance.
 

natorp

XLDnaute Accro
Re : Problème avec ma fonction Left

Bjr à vous

tempio : tu parles d'espace dans ton message, est-ce que cela veut dire que tu souhaites tout ce qui se trouve à gauche du premier espace ?

Si tel est ton cas de figure, voici une formule pour ça avec le texte en A4 :

Code:
=GAUCHE(A4;CHERCHE(" ";A4)-1)

Cordialement, Gérard
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème avec ma fonction Left

Bonjour Tempio, bonjour le forum,

On ne sait pas si tu parles de formule ou de VBA... En français la formule serait GAUCHE et pas Left... De plus la fonction Left part de la gauche donc si il n'y a pas d'espace avant DG ça ne ghange rien... Bref, j'ai pas vraiment compris ton problème.
À tout hasard :
• VBA MsgBox : Left(Trim(Range("Ta_plage")),2)
• Formule en B1: = GAUCHE(SUPPRESPACE(A1); 2)

[Édition]
Bonjour Pierrot, Julberto, Nartop, on s'est croisé
 

Tempio

XLDnaute Occasionnel
Re : Problème avec ma fonction Left

Merci pour vos propositions, j'y vais pour tester chacune d'elles. Toute fois, il faut préciser que mes données se trouvent dans une BD avec une colonne où il ya mes entités (DG / CA / MED). Maintenant j'essaie de faire des requetes dans mon modules en recherchant par exemple les personnes qui ont pour entité DG or ce que j'ai comme chaine de caractère pour faire cette comparaison est : DG / CA / MED.
 

Tempio

XLDnaute Occasionnel
Re : Problème avec ma fonction Left

Pour faciliter la tâche, je mets un bout de mon script :
For Each z1 In zone1
If Left(z1.Offset(0, 23), 2) = "DG" then compteur = compteur + 1
End If
Next z1

Mais il ne me compte pas les personnes dont l'entité admet les espaces comme : DG / CA / MED.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème avec ma fonction Left

Bonjour le fil, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim r1 As Range 'déclare la variable r1 (Recherche 1)
Dim r2 As Range 'déclare la variable r2 (Recherche 2)
Dim pa1 As String 'déclare la variable pa1 (Première Adresse 1)
Dim pa2 As String 'déclare la variable pa2 (Première Adresse 2)
Dim x1 As Integer 'déclare la variable x1 (incrément 1)
Dim x2 As Integer 'déclare la variable x2 (incrément 2)
 
Set pl = Range("B8:B" & Range("B65536").End(xlUp).Row) 'définit la plage pl
Set r1 = pl.Find("DG", , xlValues, xlPart) 'définit la recherche r1
If Not r1 Is Nothing Then 'condition : si il existe au moins une occurrence de "DG" dans la plage pl
    pa1 = r1.Address 'définit la première Adresse 1
    Do 'éxécute
        x1 = x1 + 1 'incrémente la variable x1
        Set r1 = pl.FindNext(r1) 'redéfinit la recherche (recherche Suivant)
    'boucle tant qu'il existe des occurrences ailleurs qu'en pa1
    Loop While Not r1 Is Nothing And r1.Address <> pa1
End If 'fin de la condition
Set r2 = pl.Find("CA", , xlValues, xlPart) 'idem
If Not r2 Is Nothing Then
    pa2 = r2.Address
    Do
        x2 = x2 + 1
        Set r2 = pl.FindNext(r2)
    Loop While Not r2 Is Nothing And r2.Address <> pa2
End If
Range("D9").Value = x1 'place le nombre d'occurrences de DG en D9
Range("H9").Value = x2 'place le nombre d'occurrences de CA en h9
End Sub
 

Si...

XLDnaute Barbatruc
Re : Problème avec ma fonction Left

Salut

pour une solution avec formules voir la proposition de natorp.
Si... non, une adaptation VBA de celles-ci (début donné par Robert)
Code:
Sub Macro1()
    Dim pl As Range    'déclare la variable pl (PLage)
    Set pl = Range("B8:B" & Range("B65536").End(xlUp).Row)    'définit la plage pl
    [D9] = Application.CountIf(pl, "*DG" & "*")
    [H9] = Application.CountIf(pl, "*CA" & "*")
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972