XL 2010 nompropre vba

matoupitou

XLDnaute Junior
bonjour

peut-être que qq1 peut m'aider
j'aimerai créer un bouton dans ma barre d'outils qui me permettrait de passer au format 1ère lettre en maj de chaque mot et sinon minuscule ; écrasant les anciens texte et figeant les nouvelles valeurs
je sais que la fonction nompropre permet cela ; en enregistrant une macro je n'arrive pas à écrire que cela fonctionne pour n'importe quelle cellule. parfois ça efface

en pj un exemple avec mon texte VBA

par avance merci pour votre aide
 

Fichiers joints

youky(BJ)

XLDnaute Barbatruc
Salut bien,
Inserer un module et copier ce code
Bruno

Edit remplacer Cells(lig,2) par Cells(lig,1) pour remplacer les données
VB:
Sub majuscule()
For lig = 2 To [A65000].End(3).Row  '2 à bas de col A
Cells(lig, 2) = Application.Proper(Cells(lig, 1))
Next
End Sub
 

Jacky67

XLDnaute Accro
bonjour

peut-être que qq1 peut m'aider
j'aimerai créer un bouton dans ma barre d'outils qui me permettrait de passer au format 1ère lettre en maj de chaque mot et sinon minuscule ; écrasant les anciens texte et figeant les nouvelles valeurs
je sais que la fonction nompropre permet cela ; en enregistrant une macro je n'arrive pas à écrire que cela fonctionne pour n'importe quelle cellule. parfois ça efface

en pj un exemple avec mon texte VBA

par avance merci pour votre aide
Bonjour à tous
Essaye
VB:
Sub propre()
[a2:a10] = Application.Proper([a2:a10])
End Sub
ou pour toute la colonne occupée
Code:
Sub propre()
Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row) = Application.Proper(Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row))
End Sub
 
Dernière édition:

Roblochon

XLDnaute Accro
Bonjour,

Ci-dessous, deux méthodes dans la même macro, la première mets les noms propres en valeur brutes, la deuxième (ligne à décommenter) mets la fonction NomPropre dans les cellules, à vous de choisir.
VB:
Sub nompropre()
'
    Dim c As Range
    ' Si selection est autre chose que des cellules
    ' sortir directement
    If Not TypeOf Selection Is Range Then Exit Sub
    '
    ' Parcourir les cellules de la sélection
    For Each c In Selection.Cells
        c.Offset(, 1) = Application.Proper(c)
        ' Si vous voulez garder la formule dans les cellules
        ' décommentez la ligne suivante
        'c.Offset(, 1).Formula = "=PROPER(" & c.Address & ")"
    Next

End Sub
bonne soirée
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir a tous
juste pour le fun comme evaluate m'amuse et que je suis actuellement en train de ranger les archive (dossier evaluate)
je vous propose ce truc tordu mais fonctionnel
évaluer la répétition d'une évaluation çà c'est drôle alors
VB:
'Formater une Colonne ou un range en Majuscule,Minuscule ou nom propre en un coup
'en un coup sans boucle avec evaluate
Sub test()
ACTION Range("A1:A20"), "PROPER" 'Argument possible ("UPPER","LOWER","PROPER","TRIM")
End Sub

Sub ACTION(rng As Range, forme As String)
     With rng
        .Value = Evaluate("IF(ISTEXT(" & .Address & ")," & forme & "(" & .Address & "),REPT(" & .Address & ",1))")
    End With
End Sub
rigolo non? ;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Alors si c'est pour le fun, je remets une pièce dans le nourrin ;)
VB:
Sub AmusonsNousEnAttendantMinuit()
[A1] = Chr(115) + Chr(116) + Chr(97) + Chr(112) + Chr(108) + Chr(101) + Chr(49) + Chr(54) + Chr(48) + Chr(48)
Funny Range("A1")
Funny Range("A1"), vbUpperCase
Funny Range("A1"), vbLowerCase
End Sub
Private Sub Funny(rng As Range, Optional x As VbStrConv = 3)
MsgBox StrConv(rng.Text, x)
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

patricktoulon
Oui, j'ai essayé ton code.
(Faudrait voir ce que cela donne avec ACTION Columns(1), "PROPER";))
 

patricktoulon

XLDnaute Barbatruc
re
ca marche ca fait beaucoup mais ca marche
mais c'est quand même plus rapide qu'une boucle sur le rows.count(1048576 lignes)


edit:
ouvre un fichier rempli sur toutes les lignes et sur quelques colonnes tu va voir le temps qu'il met pour s'ouvrir ;) et surtout le poids qu'il fait

peut etre devrais-je ajouter un xlup histoire que ca s'arrete a ce qui est rempli non ?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

[aparté qui ne survivra pas au week-end]
Boucle ou pas boucle, personnellement si j'ai besoin d'avoir un string propre dans la case, bah je fais ceci:
J'appuie sur SHIFT puis je tape mon premier caractère dans la cellule
Je relâche la touche SHIFT et je tape le second caractère.
Bref puisque je sais vouloir du nom propre alors je saisis du nom propre dans ma cellule ;)

Et surtout Excel étant un tableur, je m'ingénie à l'utiliser comme tel.
Pour les strings, j'ai Word avec sa fameuse combinaison de touche SHIFT+F3 ;)
[aparté qui ne survivra pas au week-end]
 

patricktoulon

XLDnaute Barbatruc
re
oui quand on le fait soi même mais quand c'est un fichier transmis?... tout le monde ne prends pas cette peine
et ça arrive plus souvent que de raison
on peut faire ca dans le change aussi histoire que ca soit automatique

après perso c'est plus pour apprendre a maîtriser evaluate avec des formule que le besoins
je m'eclate avec ces trucs
 

Staple1600

XLDnaute Barbatruc
Re

[aparté bis]
Si c'est un fichier transmis, je le renvoie à l'expéditeur en lui demandant de respecter la normalisation du fichier (que j'aurais pris le soin de spécifier contractuellement)
Si c'est un collègue, je lui renvoie le fichier par mail pour qu'il le retraite.
Si il persiste, je renvoie le fichier une seconde fois (avec copie au "boss")
Bizarrement, tous mes collègues m'envoient des fichiers quasi OK
;)
[/aparté]
 

matoupitou

XLDnaute Junior
Salut bien,
Inserer un module et copier ce code
Bruno

Edit remplacer Cells(lig,2) par Cells(lig,1) pour remplacer les données
VB:
Sub majuscule()
For lig = 2 To [A65000].End(3).Row  '2 à bas de col A
Cells(lig, 2) = Application.Proper(Cells(lig, 1))
Next
End Sub

merci : comment on écrit qu'on veut la modification pour n'importe quelle(s) cellule(s) à partir du moment où on l(es) a sélectionné(s) s'il-vous-plait Youky?
 

matoupitou

XLDnaute Junior
Bonjour,

Ci-dessous, deux méthodes dans la même macro, la première mets les noms propres en valeur brutes, la deuxième (ligne à décommenter) mets la fonction NomPropre dans les cellules, à vous de choisir.
VB:
Sub nompropre()
'
   
[QUOTE="Jacky67, post: 20272249, member: 204537"]
Bonjour à tous
Essaye
[CODE=vb]Sub propre()
[a2:a10] = Application.Proper([a2:a10])
End Sub
ou pour toute la colonne occupée
Code:
Sub propre()
Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row) = Application.Proper(Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row))
End Sub

End Sub[/CODE]

bonne soirée
[/QUOTE]

merci
peut-être me suis-je mal exprimée
que je sélectionne 1 cellule ou plusieurs que celle(s)-ci soit(ent) en colonne 'A' ou '...', j'aimerai qu'une macro permette la fonction nompopre puis collage spécial valeurs : merci de m'aider à nouveau :)
 

youky(BJ)

XLDnaute Barbatruc
Hello à tous,
Matoupitou, si tu veux par la selection
Selectionner les noms et hop la macro
Bruno
VB:
Sub NomPropre()
Selection.Value = Application.Proper(Selection.Value)
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
joli!!joli!!joli!!
a la j'adore tu me fait la plage sans la matricielle
je dis respect Monsieur ++++++++++
je la met tout de suite dans mes archives
mais pourquoi j'ai pas pensé a index suis je bète
c'est un délice.... le pain d’épice de la marque bien sur ;)
 

Eric C

XLDnaute Accro
Bonsoir le fil

Puisé dans mes archives (moins concis que le code de Staple) :
VB:
Sub MajusculePlageA1A10()
Dim cell As Range
For Each cell In Range("A1:A10")
cell = Evaluate("PROPER(""" + cell + """)")
Next cell
End Sub
@+ Eric c
 

job75

XLDnaute Barbatruc
Bonsoir tout le monde,

Les solutions des posts #15 et #17 ne vont pas si Selection n'est pas une plage rectangulaire (cellules non jointives).

Bonne nuit.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas