Trouver caracteres miniscule dans cellules

Bonjour a tous

je recherche un code vba pour trouver toutes les cellules qui ont plus de 2 caracteres minuscule dans une cellule et lister les numeros de lignes dans une autre colonne

merci de votre aide

phil

Bonjour,

voici une piste, j'ai une petite fonction VBA qui retourne le nombre de caractères minuscules d'un texte:

Function NBMinuscule(texte As String)
Dim car As String
Dim compteur As Variant

Application.Volatile
compteur = 0

If Len(texte) > 0 Then
    For i = 1 To Len(texte)
        car = Mid(texte, i, 1)

        If Not LCase(car) = UCase(car) Then
            If car = LCase(car) Then
                compteur = compteur + 1
            End If
        End If
    Next i
End If

NBMinuscule = compteur
End Function

ça teste si il existe une notion de minuscule majuscule pour le caractère, si non alors on passe au caractère suivant, si il existe une minuscule et majuscule, on vérifie que le caractère est bien la minuscule, et on incrémente le compteur.

bonjour à tous,

une proposition, sélectionner la plage de cellules à tester et lancer la macro via alt-F8

62-minuscules.xlsm (16.42 Ko)
Function contientminuscule(texte)
    For i = 1 To Len(texte)
        b = Mid(texte, i, 1)
        If b >= "a" And b <= "z" Then
            ctr = ctr + 1
            If ctr > 2 Then contientminuscule = True: Exit Function
        End If
    Next i
    contientminuscule = False
End Function
Sub aargh()
'sélectionner la plage à tester avant de lancer la macro
Set resultat = Range("D1") ' adresse de la première cellule où mettre la liste
    Set plage = Intersect(Selection, Selection.Parent.UsedRange) 'plage de cellules à tester
    If plage Is Nothing Then MsgBox "selection non valide": Exit Sub
    ReDim contient(1 To plage.Count, 1 To 1) 'vecteur résultat
    For Each texte In plage
        If contientminuscule(texte) Then
            ctr = ctr + 1
            contient(ctr, 1) = texte.Row
        End If
    Next texte
    resultat.Resize(ctr, 1) = contient
End Sub

Bonjour à tous

Autant pour moi je n'avais compris toute la demande cette formule compte le nombre de minuscule dans la cellule

=SOMMEPROD((CODE((STXT(A1;LIGNE(INDIRECT(1&":"&NBCAR(A1)));1)))*1>=97)*(CODE((STXT(A1;LIGNE(INDIRECT(1&":"&NBCAR(A1)));1)))*1<=122)*(CODE((STXT(A1;LIGNE(INDIRECT(1&":"&NBCAR(A1)));1)))*1<>""))

merci je vais tester tout ca demain matin

h2so4 ca fontionne parfaitement merci, seulement j'ai un petit soucis ca me compte le nombre de caracteres minuscules dans la ligne complete et ce que j'ai besoin c'est de savoir si j'ai dans une cellule des mots en minuscules de plus de 2 caracteres qui se suivent ex:ent car des fois j'ai mm/mm par exemple, est ce possible d'aporter une petite modification ?

phil

Bonsoir,

voici la macro avec la fonction adaptée

Function contientminusculesconsecutives(texte, Optional combien = 3)
' texte = texte à examiner
' combien = nombre minimum de caractères minuscules consécutifs à trouver
    For i = 1 To Len(texte)
        b = Mid(texte, i, 1)
        If b >= "a" And b <= "z" Then
            ctr = ctr + 1
            If ctr >= combien Then contientminusculesconsecutives = True: Exit Function
        Else
            ctr = 0
        End If
    Next i
    contientminusculesconsecutives = False
End Function
Sub aargh()
    'sélectionner la plage à tester avant de lancer la macro
    Set resultat = Range("D1") ' adresse de la première cellule où mettre la liste
    Set plage = Intersect(Selection, Selection.Parent.UsedRange)
    If plage Is Nothing Then MsgBox "selection non valide": Exit Sub
    ReDim contient(1 To plage.Count, 1 To 1)
    For Each texte In plage
        If contientminusculesconsecutives(texte) Then
            ctr = ctr + 1
            contient(ctr, 1) = texte.Row
        End If
    Next texte
    resultat.Resize(ctr, 1) = contient
End Sub

merci beacoup, nickel ca fontionne parfaitement

phil

Rechercher des sujets similaires à "trouver caracteres miniscule"