Macro transformer une zone en majuscule

Bonjour à tous,

Je souhaite lancer une macro d'un fichier qui s’exécutera sur un autre ficher et qui ira sélectionner la zone à transformer en majuscule.

J'ai ce code qui fonctionne très bien quand on le lance sur le fichier en lui même, mais si je le lance sur un autre fichier, la fenetre pour sélectionner la zone apparait bien mais je ne peux pas sélectionner.

voici le code :

Dim cel As Range

Application.InputBox ("Sélectionner")

For Each cel In Selection

cel = UCase(cel)

Next cel

merci

Salut Ben,

je ne sais pas si ça peut t'aider mais en piochant sur les forums, j'ai trouvé cela (la deuxième ligne est là pour tester le résultat de la première).

Stfile = Application.GetOpenFilename
Range("A1").Value = Stfile

Mets ça en macro affecté à un bouton et vois ce que ça donne.

Pour le reste, je ne suis pas encore l'homme qu'il te faut mais j'imagine bien que "l'autre" fichier doit être ouvert pour pouvoir opérer ton UCase.

Bien à toi.

Bonsoir,

Tu supprimes la ligne Application.InputBox qui ne te sert à rien. Tu fais ta sélection. Puis tu lances la macro.

Cordialement.

MFerrand a écrit :

Bonsoir,

Tu supprimes la ligne Application.InputBox qui ne te sert à rien. Tu fais ta sélection. Puis tu lances la macro.

Cordialement.

eh non, si j'ai mis une inputbox c'est pour aller chercher le fichier. ce n'est pas moi vais utiliser le fichier et donc la personne ne sait pas y mettre une macro donc je lui fourni un fichier avec la macro qui va aller chercher son fichier qu'elle veut traiter.

C'est à l'utilisateur de savoir ce qu'il veut mettre en majuscules !

Chercher le fichier ? Aucune commande pour faire ça dans ton code. C'est pas près de se faire.

Au demeurant, cela ne change pas la question : tu veux basculer en majuscules le contenu d'une plage sélectionnée par l'utilisateur, ce qui implique d'abord la sélection de la plage, ensuite lancement de la macro qui exécutera l'action.

Cordialement.

Oui pardon j'ai modifié ma macro, quand je lance la macro elle ouvre une fenêtre pour aller chercher le fichier à traiter, puis sélectionner la zone.

J'ai fait comme ça car je souhaite que l'utilisateur n'ait aucune labido à faire à par lancer la macro et je trouve que c'est plus simple avec l'inputbox

Bonjour,

je souhaite que l'utilisateur n'ait aucune labido à faire à par lancer la macro

Je n'ai aucune idée de la façon de faire une labido mais j'ai l'impression que tu mélanges deux façons de faire incompatibles entre elles.

D'un côté un petit outil qui applique une action à une plage sélectionnée par l'utilisateur (c'est le type d'outils complémentaires qu'on peut créer pour rendre plus faciles ou plus rapides ou mieux adaptées certaines manipulations dans le tableur, macros que l'on place souvent dans un classeur de macros personnelles [à extension .xlsb ou .xlb pour les versions antérieures] s'ouvrant masqué en même temps qu'Excel et qui rend ces outils toujours disponibles [par l'intermédiaire de l'onglet Compléments dans les nouvelles versions]).

Là, l'utilisateur travaille dans les conditions habituelles, et lance la macro chaque fois qu'il en a besoin, après sélection de la zone où elle doit s'appliquer, soit une utilisation similaire à la plupart des commandes d'Excel.

D'un autre côté, tu veux que l'utilisateur lance la macro, laquelle se charge du reste. Enfin... elle ne peut se charger du reste que si l'utilisateur lui indique le classeur dans lequel elle doit s'appliquer, la feuille du classeur et la plage dans la feuille.

Cela fait pas mal de choses, souvent plus de manipulations de la part de l'utilisateur que le fait d'indiquer en la sélectionnant la plage sur laquelle agir avant de lancer la macro.

Là il faut que la macro le questionne pour qu'il identifie le fichier sur lequel elle doit s'appliquer. GetOpenFilename le permet mais l'obliqe à naviguer sur le disque pour sélectionner le fichier dans un dossier. Niveau macro, il faudra ensuite tester si le fichier est ouvert et dans ce cas l'activer, ou non et dans ce cas l'ouvrir.

Ensuite la macro devra à nouveau le questionner pour qu'il indique une plage dans le classeur. Application.InputBox (mal utilisée dans ton bout de code, tu gagnerais à relire l'article de l'aide sur cette méthode...) le permet mais, si l'utilisateur lance la macro concernée, c'est qu'il se trouvait devant une partie de tableau sur laquelle il avait déjà préalablement estimé que l'action de la macro devait être appliquée, et au lieu de le laisser simplement sélectionner la plage concernée (qu'il est seul à pouvoir indiquer) tu lui fais prendre un chemin détourné pour arriver en plus de temps au même résultat !

C'est toi qui vois ! Mais en tant qu'utilisateur, je viendrais vite te dire deux mots...

Quoi tu ne sais pas ce que c'est qu'une labido!!! la honte!!

voici la macro définitive :

Sub majuscule()
Dim Cell As Range
Dim Sh As Worksheet
Dim Plage As Range
MonFichier = Application.GetOpenFilename("Fichiers Excel (*.xl*), *.xl*")
If MonFichier <> False Then
Workbooks.Open Filename:=MonFichier
Else
Exit Sub
End If
With Application.InputBox("Sélectionner", , , , , , , 8)
    On Error GoTo Fin   ' si l'utilisateur annule l'inputbox la ligne suivant va planter : on va directement en fin de procédure
    Set Sh = .Parent
    Set Plage = Sh.Range(.Address)
End With

For Each Cell In Plage.Cells
    Cell = UCase(Cell)
Next Cell

Fin:
End Sub

Quand je disais que je voulais qu'une fenêtre s'ouvre je voulais également que la personne aille chercher son fichier.

Amuse-toi bien !

Rechercher des sujets similaires à "macro transformer zone majuscule"