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 :

Problème pour remplacer plusieurs caractères avec Mid [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut Problème pour remplacer plusieurs caractères avec Mid
    Bonjour,

    Je souhaite remplacer les 3 derniers caractères d'un code à 5 caractères par des 0 si le 2ème caractère est différent de 0
    Ex A7500 alors A7000

    le code ci dessous me retourne faux dans la cellule pour un code par exemple A3500 et vrai pour un code A4000
    Les lignes 8 et 9 fonctionnent correctement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Test()
     
    Dim code As String
     
    For x = 2 To 20
    code = Cells(x, 5)
     
    If code Like "?0???" Then Cells(x, 6) = code
    If code Like "?00??" Then Cells(x, 6) = code
    If code Like "?[1-9]*" Then Cells(x, 6) = Mid(code, 3, 3) = "000"
     
    Next
     
    End Sub
    Merci d'avance de votre aide

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Je pense que tu cherche trop compliqué

    Dans un premier temps, avec une formule classique sans passer par VBA tu aurais pu t'en sortir

    Dans un second temps, et pour répondre à ta question, utilises la fonction mid pour vérifier ton 2e caractère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if mid(Cells(x, 5).value,2,1) <> "0" then
       cells(x,6).value = left(cells(x,5).value,2) & "000" 
    end if
    A Adapter avec où tu veux positionner tes données
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    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
    Sub Test()
     
    Dim code As String
     
    For x = 2 To 20
    code = Cells(x, 5)
     
    If right(left(code,2),1) <> "0" then
    cells(x,6)= left(code,2) & "000"
    else
    cells(x,6)=code
    end if
     
    Next
     
    End Sub

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Prem's !

    Sinon, pour rajouter une couche, et donc sans passer par VBA mais par une formule dans une cellule, tu peux écrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(STXT(A1;2;1) <>"0";GAUCHE(A1;2) & "000";A1)
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut
    Merci de la première réponse ça fonctionne parfaitement

    Pourquoi faire simple alors que l'on peut faire compliqué !!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/09/2011, 11h04
  2. [XL-2003] Probléme pour ecrire une macro avec Combobox et incrementation dans plusieurs colonne
    Par mimil49 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/07/2011, 10h28
  3. Réponses: 3
    Dernier message: 29/12/2008, 15h22
  4. Réponses: 1
    Dernier message: 21/05/2007, 11h48
  5. Problème pour différencier plusieurs select avec le même nom
    Par vallica dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/04/2006, 11h35

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