Majuscules

T

Thierry

Guest
Bonjour,

Est-il possible de modifier( avec une macro ou autres) de remplacer par des majuscules le texte saisit en minuscules dans une colonne,automatiquement.

Ensuite, je repose ma question: Je voudrai savoir si un document Excel est deja ouvert. Lorsque j'ouvre mon fichier, je clique sur un bouton: Si mon document est le seul ouvert, alors excel se ferme. Si le document que j'ouvre n'est pas le premier ouvert, lorsque je clique sur un bouton, cela ne ferme que mon document que je viens d'ouvrir.

J'ai testé ceci mais cela ne fonctionne pas (cela n'est pas de moi. je voulais d'adapter). J'ai quelque soit le nombre de document ouvert la fermeture de mon document et non d'Excel.


'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'Recherche si un classeur est ouvert
'-----------------------------------
'modifiée le 17/6/1997 Par PN
'////////////////////////////////////
Sub ClasseurOuvert()

For Each X In Workbooks
If StrComp(X.Name, C, 1) = 0 Then
Application.Quit
Exit For
Else
ActiveWorkbook.Close
End If
Next X

End Sub


Merci de vos reponses et A+
 
M

Monique

Guest
Bonsoir,

Réponse à la première question seulement.
Ce n'est pas automatique, mais c'est rapide.
Il y a la fonction =MAJUSCULE(A1)
Il y a aussi la possibilité d'en faire une fonction matricielle.
Sélectionner autant de cellules qu'il y en a à rectifier.
Ecrire =MAJUSCULE(A1:B10)
Valider en appuyant simultanément sur ctrl + maj + entrée
Ensuite, copier, collage spécial, choisir : valeurs.
 
@

@+Thierry

Guest
Bonsoir,

Idem Réponse à la première question uniquement (l'autre à déjà son fil et sionon les fils de discussion n'ont plus aucun sens)

Vu que tu dis "Automatiquement"... Je pensais donc que tu voulais qu'au moment de la saisie dans une colonne tout ce que tu tapes se transforme en Majuscule... (Sauf les Formules contenant du text... Si tu n'en as pas et n'en auras pas tu peux virer ce code le second IF)

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
If Target.HasFormula = False Then
Target.Value = UCase(Target)
End If
End If
End Sub

....

Si tu veux faire çà sur une plage déjà saisie et existante, (sans créer une nouvelle colonne avec formule)

Avec cette macro çà va le faire (fixer la plage à couvrir)

Sub Test()
Dim Cell As Range
Set Plage = Range("A1:A500")
For Each Cell In Plage
Cell.Value = UCase(Cell)
Next Cell
End Sub


Voilà Bonne Soirée
@+Thierry
 
T

Thierry

Guest
Re-Bonsoir,

C'est bien la premiere methode qui me convient. La colonne qui m'interresse est la "C". Comment integrer cette macro dans mon document. Je l'ai mis dans ThisWorkBook avec une macro qui se lance au demarrage, mais cela ne fonctionne pas. Merci de ton aide et A+
 
@

@+Thierry

Guest
Re Thierry

Non ce n'est pas dans le Module "ThisWorkBook" qu'il faut mettre ce code !

Il faut mettre cette macro dans le private module de la Feuille en question... L'évènement "Worksheet_Change" n'est pas géré dans ce module. Lui il gère l'évènement "Workbook_SheetChange"

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Application.Intersect(Target, Range("C:C")) Is Nothing Then
Target.Value = UCase(Target)
End If
End Sub

Ici c'est la version qui ne gère pas les formules contenant une string de Text... Par exemple si places ce code (là où il faut donc !) tu ne pourras plus taper dans la colonne "C" (j'ai changé aussi çà, remarque où c'est)... Donc je disais que tu ne pourras plus saisir de formule de ce style :
=SI(A1=1;"Toto";"Zaza")....... Tu auras ZAZA et basta !

Voilà donc si tu es susceptible d'avoir des formules de ce style tu mets le code de mon précédent post........ Sinon tu mets celui ci..... Et donc où ?
=> Dans le Private Module de Feuille !! (celui de la feuille où tu as ta colonne "C")....

Car ce n'est pas de dire "celà ne fonctionne pas" qui résoudra ton problème. C'est de penser un peu VBA !

Les évènements ThisWorkBook dans le Module ThisWorkbook gèrent le Classeur... Le Classeur Gère les Feuilles, les Feuilles Gèrent les Ranges, Les Ranges sont soit des Cellules, soit des Plages et donc dans le cas présent une Colonne....
Si l'on veut gérer un évènement précis pour une feuille précise celui ci-sera pris en compte dans le module de la feuille en question...
Si tu veux gérer un évènement commun à toutes les feuilles, alors ThisWorkBook est approprié....(quoiqu'on peut gérer aussi une feuille précise depuis là... mais je ne veux pas t'embrouiller)

Enfin j'écris tout ça si tu as envie de comprendre...

Bon allez à plus...
@+Thierry
 

Discussions similaires

Réponses
4
Affichages
368
Réponses
2
Affichages
209

Statistiques des forums

Discussions
314 653
Messages
2 111 575
Membres
111 205
dernier inscrit
Adrien25