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 :

Reconnaissance format cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 179
    Par défaut Reconnaissance format cellule
    Bonjour

    je cherche à tester la valeur d'une cellule à chaque changement de cette dernière afin de pouvoir formater la cellule en fonction du nombre de caractères. Cependant, quelquefois la valeur peut commencer par zéro et dans ce cas, excel ne lit pas le zéro. J'ai essayé de mettre un format texte mais cela ne fonctionne pas non plus et met le bazar dans le reste du code. Quelqu'un a-t-il une solution à me proposer ?

    Par avance, merci.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    
    Private Sub worksheet_change(ByVal target As Range)
    
    'permet de sortir de la procédure si plus d'une cellule est sélectionnée
    'sinon la suite de la macro renvoie un message d'erreur
    
    If target.Count > 1 Then Exit Sub
    
    If Intersect(target, Range("a2:a200")) Is Nothing Then
        Exit Sub
        Else
            'vérification que la cellule est remplie
            If Len(target.Value) = 0 Then
                Exit Sub
                Else
                
                'Vérification que ce n'est que des chiffres
                    If Not target.Value Like String(Len(target.Value), "#") Then
                        target.Interior.ColorIndex = 3
                        target.NumberFormat = "General"
                        target.Select
                        MsgBox "Votre code ne doit contenir que des chiffres"
                        Exit Sub
                    End If
    
                'Vérification que le premier caractère est un zéro
    'Cette partie du code ne fonctionne pas :-(
                If Left(target.Value, 1) = "0" Then
                    If Len(target.Value) = 4 Then
                        target.Interior.ColorIndex = 2
                        target.NumberFormat = "0# ###"
                            Else
                                If Len(target.Value) = 5 Then
                                target.Interior.ColorIndex = 2
                                target.NumberFormat = "0# ## ##"
                                End If
                    End If
                
                Else
                    'Vérifie qu'il y a au moins 5 caractères
                    If Len(target.Value) < 5 Then
                        target.Interior.ColorIndex = 3
                        target.NumberFormat = "General"
                        target.Select
                        MsgBox "Votre code est inférieur à 5 caractères. Merci de vérifier votre saisie"
                    End If
                                    
                    'Vérifie qu'il n'y a pas plus de 6 caractères
                    If Len(target.Value) > 6 Then
                        target.Interior.ColorIndex = 3
                        target.NumberFormat = "General"
                        target.Select
                        MsgBox "Votre code est supérieur à 6 caractères. Merci de vérifier votre saisie"
                    End If
                    
                    'Vérifie qu'il y a 6 caractères
                    If Len(target.Value) = 6 Then
                        target.Interior.ColorIndex = 2
                        target.NumberFormat = "## ## ##"
                    End If
                    
                    'Vérifie qu'il y a 5 caractères
                    If Len(target.Value) = 5 Then
                        target.Interior.ColorIndex = 2
                        target.NumberFormat = "## ###"
                    End If
                End If
        End If
    End If
    
    End Sub

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Pour une cellule formatée, tu peux utiliser sa propriété Text plutôt que Value.
    Tu obtiendras ce qui est affiché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(target.Text, 1) = "0" Then
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. format cellule (text) rapatrier par base access
    Par makroute dans le forum Excel
    Réponses: 2
    Dernier message: 23/05/2007, 11h21
  2. [POI/JEXCEL]reconnaissance de cellules fusionnées
    Par caro_a dans le forum Documents
    Réponses: 2
    Dernier message: 17/02/2007, 14h24
  3. [VBA-E]automatiser "clic droit, format cellule, texte"
    Par jmlcea dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/04/2006, 16h21
  4. [VBA-E] Format cellule
    Par peon3 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/02/2006, 18h35
  5. [Delphi 2005] Format cellules Excel
    Par Vulcanos dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 24/05/2005, 22h21

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