IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Majuscule auto pour une colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    423
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 423
    Par défaut Majuscule auto pour une colonne
    Bonjour à tous,
    J'ai ce code vba dans ma feuille pour forcer la majuscule sur une colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, Range("D7:D285 ")) Is Nothing Then Exit Sub
    Target.Value = UCase(CStr(Target.Value))
    Sans la première ligne, ca ne fonctionne pas en cas d'insertion simultannée sur plusieurs lignes ( par un copier coller par exemple ), comment pourrais je forcer la majuscule même si Target.Count>1

    Quelqu'un a une idée ?

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    et si tu faisais le contraire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim x as integer
    If Target.address = "$d$7" Then
     
    for x = 7 to 285
    range("d" & x) = UCase(Cstr(range("d" & x)))
    next x
    Bon ben tu vois....et adapte si ça te va

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut devdev et le forum
    Quand tu veux une solution, par rapport à ton code, donne le code en entier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cel As Range
    Dim Plg As Range
    Set Plg = Intersect(Target, [D7:D285])
    If Plg Is Nothing Then Exit Sub
    For Each Cel In Plg
        Cel = UCase(Cel)
    Next Cel
    End Sub
    A+

  4. #4
    Membre éclairé
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    423
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 423
    Par défaut
    Ca fonctionne très bien merci gorfael,
    Un seul problème tout de même, lorsque j'efface le contenu de la cellule, j'ai le sablier pendant deux secondes. C'est bizarre, ca ne me le fait pas quand j'insère quelquechose dans la cellule.
    Je vais essayer l'autre solution.
    ... La première solution ne fonctionne pas, je vais voir pourquoi

  5. #5
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour le fil as tu essayele code de l ami gorfael dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    a la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Range)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut devdev et le forum
    Je ne vois pas pourquoi, mais tu peux remplacer :par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not(isempty(Cel)) then Cel = UCase(Cel)
    A+

  7. #7
    Membre éclairé
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    423
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 423
    Par défaut
    Merci à vous deux, en rajoutant le code, ca fonctionne très bien.

    ... Enfin, j'ai parlé trop vite.... Le code est très très lent quand je fais un copier coller !!

    Il me faut une autre solution, est ce qu'il n'y a pas un moyen de faire autrement que par du vba ?

  8. #8
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re as tu essaye au moins de l mettre dans selection change & et pas dans l autre si il y a les 2 codes ca fonctionne mal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Cel As Range
    Dim Plg As Range
    Set Plg = Intersect(Target, [D7:D285])
    If Plg Is Nothing Then Exit Sub
    For Each Cel In Plg
        Cel = UCase(Cel)
    Next Cel
    End Sub

Discussions similaires

  1. Police différente pour une colonne d'une ListView
    Par Médinoc dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/02/2009, 15h28
  2. Remplissage auto d'une colonne avec une barre de progression
    Par Chikatilo dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 26/06/2008, 17h07
  3. Largeur fixe pour une colonne de GridView
    Par slokix dans le forum ASP.NET
    Réponses: 11
    Dernier message: 26/09/2007, 09h01
  4. Union de 2 tables pour une colonne
    Par charleshbo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/04/2006, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo