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 :

Mise en page d'un fichier après passage en majuscule [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Août 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 12
    Par défaut Mise en page d'un fichier après passage en majuscule
    Bonjour à tous,

    je suis à la recherche d'un code en vba afin d’améliorer une macro que j'ai mise en place.
    J'ai pour mission de retravailler des tables de base de données. Dans un premier temps j'ai crée un macro pour passer tous les caractères en majuscule de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub ConvertingUcase()
    Dim TheString As String, TheLetter As String, TheUcase As String
    Dim i As Byte
        Application.EnableEvents = False
        For Each c In Selection
            TheString = c.Value
            For i = 1 To Len(TheString)
                TheLetter = Mid(TheString, i, 1)
                Select Case TheLetter
                Case Chr(224), Chr(225), Chr(226), Chr(227), Chr(228), Chr(229) 'Les "A"
                    TheLetter = Chr(65)
                    TheUcase = TheUcase & TheLetter
                Case Chr(232), Chr(233), Chr(234), Chr(235) ' les "E"
                    TheLetter = Chr(69)
                    TheUcase = TheUcase & TheLetter
                Case Chr(236), Chr(238), Chr(238), Chr(239) 'Les "I"
                    TheLetter = Chr(73)
                    TheUcase = TheUcase & TheLetter
                Case Chr(243), Chr(243), Chr(244), Chr(245), Chr(246) 'Les "O"
                    TheLetter = Chr(79)
                    TheUcase = TheUcase & TheLetter
                Case Chr(249), Chr(250), Chr(251), Chr(252) 'Les "U"
                    TheLetter = Chr(85)
                    TheUcase = TheUcase & TheLetter
                Case Else
                TheLetter = UCase(TheLetter)
                TheUcase = TheUcase & TheLetter
                End Select
            Next
            c.Value = TheUcase
            TheUcase = ""
        Next
        Application.EnableEvents = True
    End Sub
    cette macron fonctionne tres bien, mais, cela modifie aussi les fonction VRAI / FAUX, cette valeur est considérée comme un texte et passe en alignement a gauche (c'est le seul moyen de repérer que la valeur n'est plus considérée comme VRAI/FAUX lors de la réimportation de ces tables dans la base de données...) si je double clic sur la cellule et que je change de cellule, la valeur repasse en alignement centré et est considérée comme valeur VRAI / FAUX...
    je ne sais pas si j'ai été clair :-/

    Auriez vous une idée de ce que je pourrais ajouter comme code afin que ma macro je puisse ne pas modifier les valeur VRAI/FAUX de mes tables ?

  2. #2
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    tu pourrais faire un test pour voir si ta cellule contient une formule. Une aide: http://www.developpez.net/forums/d93...tient-formule/

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Août 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 12
    Par défaut
    bonjour, merci pour votre réponse, mais j'ai essayé ce code seul dans un premier temps, cela met bien en rouge lorsqu'il y a une formule par contre, cela ne détecte pas pour un VRAI / FAUX...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Août 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 74
    Par défaut Essayons de tester du numérique
    Bonjour
    Il ne faut pas faire le remplacement pur toutes les valeurs numérique s(dont VRAI et FAUX).
    Donc je propose de commencer par tester If Not IsNumeric(c.Value) Then avant de faire les différentes conversions.
    Car TheString = c.Value convertit la valeur en String, donc après forcément, c.Value = TheUcase convertiti ta cellule en texte.

    Il sufit donc d'ajouter le code en rouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
        For Each c In Selection
            If Not IsNumeric(c.Value) Then
                TheString = c.Value
                For i = 1 To Len(TheString)
                    TheLetter = Mid(TheString, i, 1)
                    Select Case TheLetter
                       Case Chr(224), Chr(225), Chr(226), Chr(227), Chr(228), Chr(229) 'Les "A"
                          TheLetter = Chr(65)
                          TheUcase = TheUcase & TheLetter
                       Case Chr(232), Chr(233), Chr(234), Chr(235) ' les "E"
                          TheLetter = Chr(69)
                          TheUcase = TheUcase & TheLetter
                       Case Chr(236), Chr(238), Chr(238), Chr(239) 'Les "I"
                          TheLetter = Chr(73)
                          TheUcase = TheUcase & TheLetter
                       Case Chr(243), Chr(243), Chr(244), Chr(245), Chr(246) 'Les "O"
                          TheLetter = Chr(79)
                          TheUcase = TheUcase & TheLetter
                       Case Chr(249), Chr(250), Chr(251), Chr(252) 'Les "U"
                          TheLetter = Chr(85)
                          TheUcase = TheUcase & TheLetter
                       Case Else
                          TheLetter = UCase(TheLetter)
                          TheUcase = TheUcase & TheLetter
                    End Select
                Next i
                c.Value = TheUcase
                TheUcase = ""
            End If
        Next c
    J'ai testé, ça marche sur mon exemple.
    Et pour toi ?

    Cdlt,
    Didier

  5. #5
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Août 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 12
    Par défaut
    Bonjour Didier,
    merci pour cette explication. J'ai appliqué ta méthode et cela fonctionne !!

  6. #6
    Membre éprouvé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Août 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 74
    Par défaut
    Alors un petit aiderait à la lecture du forum...
    (et pourquoi pas un petit au passage...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mise en page de la saisie aprés l'enregistrement dans une bd
    Par biba158 dans le forum Interfaces Graphiques en Java
    Réponses: 13
    Dernier message: 20/06/2007, 15h29
  2. Réponses: 3
    Dernier message: 02/05/2007, 16h27
  3. [Excel] Récupérer la mise en page d'un fichier
    Par Zan dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 02/11/2006, 16h48
  4. Mise en page d un fichier texte
    Par mika95013 dans le forum Langage
    Réponses: 2
    Dernier message: 24/08/2006, 12h53
  5. Réponses: 1
    Dernier message: 05/05/2006, 10h36

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