[vab sous excel] metre un tableau en majuscul

princesse57000 -  
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je dois mettre un tableau de x colonne en majuscule et reduire les colonne a 32 caractere
pour le moment j'ai reussi a intégrer le nomre de colonne dont javais besoin pour ensuite mettre la formule "= majuscule()" à l'intérieur mais j'ai voulu mettre un compteur pour qu'il applique ma formule dans toutes mes nouvelles colonnes et mettre une variable qui corespondrait au nombre de colonne insérer pour qu'il aille chercher le contenu des cellules en minuscule.
mais ça nmarche pas apparement les formules que j'utilise n'acceptent pas les variables
voici ma macro poiur inserer les colonnes dont j'ai besoin :
Sub majuscule()
Dim nbcol As Integer
Dim nombrecolonne As Integer

nombrecolonne = Val(InputBox("combien de colonne voulez vous inserer?"))
Columns("a:a").Select

nbcol = 0
Do While nbcol < nombrecolonne
For compteur = 1 To Len(nombrecolonne) - 1
Selection.Insert Shift:=xlToRight
nbcol = nbcol + 1
Next
Loop
End Sub

voici le petit bout que j essaye d integrer pour la mise en majuscule :
Sub maj2()
Dim nomcolonne As String
Do
nomcolonne = Val(InputBox("dans quelle colonne voulez mettre en majuscule?"))
Range(nomcolonne).Select
ActiveCell.FormulaR1C1 = "=UPPER(RC[3])"
Selection.AutoFill Destination:=Range("A1:A70000"), Type:=xlFillDefault
Range("A1:A70000").Select
Loop While nomcolonne <> non

End Sub

si quel qu'un a une idée

je me suis mise au VBa il y a deux jours alors je galere grave
merci
A voir également:

5 réponses

gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

ce que je cherche a faire c'est mettre un tableau deja rempli en majuscule

pour cela tu peux lancer la macro suivante :

Sub majuscules()
Set choix = Application.InputBox(prompt:="Choisissez la plage à mettre en majuscules", Title:="Mise en majuscule", Top:=5, Left:=100, Type:=8)
For Each c In Range(choix.Address)
c.Value = UCase(c.Value)
Next c
End Sub


attention en copiant il faut supprimer le saut de ligne sur la première instruction :
Set choix...=8) sur une seule ligne VBA.

Sur la boite de dialogue qui apparait, avec la souris tu sélectionnes
la plage à mettre en majuscules, tu valides la boite de dialogue
et tes cellules choisies sont en majuscule !

De la même façon tu peux apporter n'importe qu'elle modification :
couleur de fond ou de police, mise en gras, création d'un lien hypertexte, etc...

1
dev044
 
c'est très pratique... le seul problème est au moment ou on fait annuler sur la message box, la macro se met en déboggage. si tu as un conseil...
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730 > dev044
 
bonjour

Merci de ton message et tu as raison la macro est un peu cavalière, essaies avec cette formule cela devrait être mieux
Sub majuscules()
Dim choix As Object
Dim c As Object
On Error Resume Next
    Set choix = Application.InputBox(prompt:="Choisissez la plage à mettre en majuscules", Title:="Mise en majuscule", Top:=5, Left:=100, Type:=8)
    If choix Is Nothing Then Exit Sub
    For Each c In Range(choix.Address)
        c.Value = UCase(c.Value)
    Next c
End Sub
0
princesse57000 Messages postés 3 Statut Membre 1
 
merci beaucoup tu m'enlèves une épine du pied
je vais donc pourvoir faire les reste de mes macros car il faut que j applique d autre modification a mon tableau XL
en fait je dois réaliser des macros pour mettre aux normes postale des fichiers d adresses en XL
dc il faut que mes fichiers arrivent a être de la forme
une colonne nom, (ou 3 colonne civ./nom/prénom), 1 colonne société, 3 colonne adresses,1 colonne Code Postale et 1 colonne ville
et toutes ses colonnes doivent avoir 32 caractères au maximum, être en majuscule et sans lettre avec accents
dc jusqu'à maintenant j'insérer des colonnes avec les formule "=majuscule() " et "= nbcar()" et je faisais des cherche remplace pour mettre des abréviation
dc la macro majuscule me fait déjà gagné du temps maintenant il faut que je fasse une macro pour mettre a 32 caractères
et une autres qui ôtes les accents
je pense essayer avec une macro qui chercher et des mots clé qui reviennent fréquemment
comme "rue, avenue, boulevard, société, établissements ...."
et une autre qui remplace "é" par "E" ...
mais il faudra certainement que je fasse quand m^me des chose manuellement pour faire du 32 caractères
je pourrais aussi faire en sorte qu si le contenue de ma cellule dépasse 32 caractères et si le cellule qui suis (adresse 1) est vide je bascule au dernier espace avant le 32 eme caractère le contenue de ma cellule dans la cellule vide
enfin je vais essayer
mais je ne suis pas contre des idées :)
merci d'avance
1
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

pour avoir toutes tes nouvelles cellules saisies en majuscule,
tu inséres simplement, dans la feuille concernée cette petite macro :

Private Sub Worksheet_Change(ByVal sel As Range)
sel.Value = UCase(sel.Value)
End Sub


Dès que tu valides ta saisie, la macro s'exécute et passe la cellule en majuscule.

est-ce ce que tu veux ?
0
princesse57000 Messages postés 3 Statut Membre 1
 
merci beaucoup pour cette info je vais tester la formule
en fait ce que je cherche a faire c'est mettre un tableau deja rempli en majuscule
pour moi la solution était donc de faire une insertion du meme nombre de colonne que mon tableau initiale (par une question à laquelle je donne le nombre de colonne a inserer qui pour moi determinera les autres variable de ma procedure
et ensuite qu'il reprenne les donné en minuscule du tableau initiale et qu'il les retrasncrive en majuscule dans mes nouvlles cellule insérer
je vais donc tester ta procedure pour voir ce qu'elle fait exactement et essayer d'avancer
si tu as d autres propostition par rapport aux explications que je t'ai fournit ci dessus n hesites pas elles seront le bien venu
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

pour continuer la mise en forme 2 macros :

Pour corriger les accents :

Sub accents()
Dim choix, cherche, remplace
Set choix = Application.InputBox(prompt:="Choisissez la plage de remplacement", Title:="Plage de remplacement", Top:=5, Left:=200, Type:=8)
cherche = Application.InputBox("Choisissez le caractère à remplacer", "Caractère à remplacer", "é", 100, 100)
remplace = Application.InputBox("Choisissez le caractère de remplacement", "Caractère de remplacement", "E", 110, 100)
For Each c In Range(choix.Address)
c.Replace What:=cherche, Replacement:=remplace, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next c
End Sub


cela peut aussi remplacer un caractère par plusieurs ou par "rien", selon le paramètre saisi et on fonctionne sur une plage pour le test.


Sub longueur()
Dim col, taille,k , l
Set col = Application.InputBox("Choisissez la plage de la colonne à contrôler", "Colonne à contrôler", , 100, 200, , , 8)
taille = Application.InputBox("Choisissez le nombre de caractères maximum", "Caractères maximum", 32, 100, 100)
For Each c In In Range(col.Address)
If Len(c.Value) > Val(taille) Then
k = 1
Do Until k > Val(taille) Or k = 0
l = k
k = InStr(k + 1, c.Value, " ")
Loop
Cells(c.Row, c.Column + 1) = Right(c.Value, Len(c.Value) - l)
Cells(c.Row, c.Column) = Left(c.Value, l - 1)
End If
Next c
End Sub


Le libellé supérieur à la longueur choisie est mis sur la colonne suivante, qui doit être vide, en tronquant au dernier espace.

Bonne découverte.

0
M-A
 
J'ai essayé vos macros, mais de mon côté ce que je désire faire dans excel c'est un masque de saisi pour les codes postaux. J'aimerais que la cellule soit toujours en format majuscule et idéalement format code postal... Dans les macros ci-hauts comme puis-je les appliquer afin que la cellule demeure toujours en majuscule ? Merci
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour,

Ce que tu demandes est contradictoire : le format code postal est "00000" et n'a rien à voir avec les majuscules puisqu'il est numérique ?
0