Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

anthooooony

XLDnaute Occasionnel
Bonjour Cher downloadien et downloadienne,

je cherche une formule excel, que je n'ai pas reussi à trouver, qui consiste à trouver dans une cellule un ou plusieurs caractere(s) en minuscule.

j'ai 100 000 clients, pour certains j'ai des cellules qui ont des caracteres en majuscule, et je souhaiterais les identifier pour modifier la casse. de 100 000 je me retrouverais surement à 10 000. seulement de le faire à la main c'est peut etre assez long.

Auriez vous une formule?

ps : j'ai trouvé cette formule, mais le resultat me donne toujours FAUX =EXACT(E6;MINUSCULE(E6)).

Bonne soirée à tous

Anthooooony
 

Roland_M

XLDnaute Barbatruc
Re : Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

Bonjour,

une astuce pour tout mettre en majuscule est d'utiliser une colonne libre avec ceci (si les noms sont en A)
=MAJUSCULE(A1) et de tirer vers le bas sur toute la colonne
puis faire copier/coller valeurs et supprimer la colonne provisoire

EDIT:
si tu préfères une macro qui sera plus simple et plus rapide
Code:
'placer cette macro du côté code feuille (pour être sur la feuille active concernée)
'adapter la colonne des noms et la 1'ligne
'puis exécuter la macro par F5

Sub MinusEnMajus()
Dim ColSource$, PremLig&, DernLig&, Lig&

ColSource = "A" ' < ici la colonne des noms
PremLig = 2 ' < ici la première ligne des noms

DernLig = Columns(ColSource).Rows(Rows.Count).End(xlUp).Row
For Lig = PremLig To DernLig
  Cells(Lig, ColSource) = UCase(Cells(Lig, ColSource))
Next
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

Bonjour à tous

Pour tromper l'ennui du 8 mai pluvieux, et pour suivre l'invitation de Roland_M, fille de la question judicieuse de gosselien.
Dans un classeur vierge, copier ces trois macros puis lancer la macro préambule avant de lancer la macro test
NB: Le petit plus, c'est ce qu'offre Intellisense
Pour tester : saisir dans la macro test
ChangerCasseCol 3,
et choisir ce que vous souhaitez dans la liste qui apparaît juste après avoir saisi la virgule


Code:
Sub preambule()
With Range("A1:C25")
.Value = "=""AbC eFg kLMoP""&ROW()"
.Value = .Value
End With
End Sub
VB:
Sub test()
ChangerCasseCol 1, vbUpperCase ' majuscule
ChangerCasseCol 2, vbLowerCase ' miniscule
ChangerCasseCol 3, vbProperCase ' nom propre
End Sub
Code:
Private Sub ChangerCasseCol(NumCol As Long, Casse As VbStrConv)
Dim c As Range
On Error Resume Next
For Each c In Columns(NumCol).SpecialCells(xlCellTypeConstants, 2)
c = StrConv(c.Text, Casse)
Next
End Sub
 
Dernière édition:

gosselien

XLDnaute Barbatruc
Re : Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

Bonjour le forum ,

autre version rapide si bcp de cellules dans la même colonne:

Sub MajusculeRapide()
'passer par un objet dictionnaire
Dim Cel As Range, Plg As Range
Dim Derlig As Long
Dim Maju As Object
Dim NbCol As Integer
Dim Nbligne As Integer
Application.ScreenUpdating = False
Set Maju = CreateObject("Scripting.Dictionary")
Set Plg = Selection
Nbligne = Selection.Rows.Count
NbCol = Selection.Columns.Count
If Not NbCol > 1 And Nbligne = 1 Then MsgBox ("Sélection de 1 ***seule*** colonne svp !!! "): Exit Sub
If Not NbCol = 1 And Not Nbligne = 1 Then MsgBox ("Sélection de 1 ***seule*** colonne/ligne svp !!! "): Exit Sub
For Each Cel In Selection
Maju(Cel.Row) = UCase(Cel)
Next Cel
Selection.Resize(Maju.Count) = Application.Transpose(Maju.Items)
End Sub
 

job75

XLDnaute Barbatruc
Re : Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

Bonjour à tous,

Pour mettre en majuscules (ou minuscules) les cellules sélectionnées :

Code:
Sub Majuscules()
'traite la plage sélectionnée
Dim a As Range
For Each a In Selection.Areas 'pour les selections multiples
  ThisWorkbook.Names.Add "ValSel", a.Value
  a.FormulaArray = "=UPPER(ValSel)" 'majuscules, LOWER minuscules
  a = a.Value 'supprime les formules
Next
ThisWorkbook.Names("ValSel").Delete
End Sub
C'est un peu moins rapide qu'avec des tableaux VBA mais ça fonctionne dans tous les cas de figure.

Sur 1048576 cellules => 7 secondes sur Win 8 - Excel 2013.

Edit : noter que les cellules vides se remplissent de #N/A, c'est normal, il faudrait en plus les supprimer.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

Re,

Avec des tableaux VBA :

Code:
Sub Majuscules1()
'traite la plage sélectionnée
Dim a As Range, t, ncol%, i&, j%
For Each a In Selection.Areas 'pour les selections multiples
  If a.Count = 1 Then
    a = UCase(a) 'LCase
  Else
    t = a 'matrice, plus rapide
    ncol = UBound(t, 2)
    For i = 1 To UBound(t)
      For j = 1 To ncol
        t(i, j) = UCase(t(i, j)) 'LCase
      Next
    Next
    a = t
  End If
Next
End Sub
Sur 1048576 cellules => 4,3 secondes sur Win 8 - Excel 2013.

A+
 

Roland_M

XLDnaute Barbatruc
Re : Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

Bonjour,

Salut Staple, Job ...

rien de tel pour les grandes quantité de cellules que d'utiliser des tableaux comme l'exemple de Job75
perso j'avais mis un truc simple à la va vite mais trop long pour la quantité que notre ami avait, j'ai pas bien réagi, enfin soit, je dois vieillir ...

en tous les cas puisque tu veux les résultats sur une colonne avec 100 0000 ce cellules
j'ai utilisé ta boucle 'préambule' pour coller les données, donc idem pour les trois tests

la méthode avec tableau de Job75 > 6 sec (logique)
la méthode la plus simple perso > 36 sec
la méthode Staple > 51 sec

EDIT:
j'oublié gosselin, plantage à la fin pour coller le tableau !?
au lancement de la macro excel affiche (ne répond pas)!?
mais déjà en sortie de boucle environ 35 sec !

bonne journée !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

Bonjour à tous

Roland_M
Merci pour le retour
Sur mon PC
job75: 2.85s
Moi: 17.78s
Toi: 15.37s

Avec la macro de gosselien, j'ai un dépassement de capacité sur : Nbligne = Selection.Rows.Count
Et en modifiant ainsi Nbligne = Selection.Rows.CountLarge, j'ai toujours l'erreur

Ce serait bien maintenant que le demandeur se manifeste...Histoire qu'on ait pas majusculer en vain ;)
 

gosselien

XLDnaute Barbatruc
Re : Detecter s'il se trouve au moins un caractere en minuscle dans une cellule

Re le forum,

idem Staple... il dépasse au même endroit et j'ignore pourquoi (si qq un a la réponse :D - limite du dictionnaire , dico dont on peut se passer dans ce cas) , mais sur 150.000 lignes ça fonctionne ; ceci dit plus de 150000 lignes dans un fichier excel ça doit être rare non ?

P.
 
Dernière édition:

Statistiques des forums

Discussions
312 294
Messages
2 086 916
Membres
103 404
dernier inscrit
sultan87