[vab sous excel] metre un tableau en majuscul

princesse57000 -  
gbinforme Messages postés 14930 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

5 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    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
      1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744 > 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
  2. 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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. 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
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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