XL 2010 nompropre vba

matoupitou

XLDnaute Occasionnel
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
 

Pièces jointes

  • nompropre.xlsm
    14.3 KB · Affichages: 12

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 Barbatruc
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:

Hasco

XLDnaute Barbatruc
Repose en paix
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
 

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 Occasionnel
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 Occasionnel
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 :)
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 938
Membres
101 844
dernier inscrit
pktla