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 :

Modifier la valeur numérique dans une chaîne de caractère


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Data Processor
    Inscrit en
    Novembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Data Processor
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2009
    Messages : 37
    Points : 32
    Points
    32
    Par défaut Modifier la valeur numérique dans une chaîne de caractère
    Bonjour,

    J'ai une base de données en xls et je voudrais modifier le nom des variables, c'est à dire modifier les chaînes de caractères des cellules de la ligne 1.

    J'ai réussi à modifier une partie des caractères, mais je n'ai pas d'idée pour faire le reste.

    Par exemple, j'ai une cellule qui contient le nom de ma variable, c'est à dire : "V1_2_TXT".
    J'ai réussi à la modifier avec la macro ci-dessous pour que cela devienne :
    "o_V1_2".

    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
    Sub Codes_Var_Com()
     
    Sheets("Extract").Select
     
        Dim Cell As Variant
        Dim LastCol As Integer
        Dim Col As Variant
        Dim Var As String
     
        LastCol = Range("ALL" & 1).End(xlToLeft).Column 'Definition derniere colonne
     
        For Col = 43 To LastCol
            Var = Cells(1, Col)
                If Right(Var, 4) = "_TXT" Then
                    Var = Replace(Var, "_TXT", "")
                    Cells(1, Col) = "o_" & Var
                End If
        Next Col
     
    End Sub
    Mais, là où je bloque, c'est que si les 2 derniers caractères sont "_2", le chiffre après le "V" et avant le dernier "_" est augmenté de 1 et le "_2" disparait :
    "o_V1_2" devient "o_V2" OU "o_V6_2" devient "o_V7"

    Est-ce clair ???

    Merci d'avance de votre aide.

    Anthony

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    J'utiliserais Left au lieu de Replace pour ne garder que la partie de gauche (sur une taille fonction de la longueur trouvée avec Len)
    Replace pourrait éventuellement remplacer une chaîne de caractères trouvée ailleurs qu'à la fin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var = "o_" & Left(Var, Len(Var) - len("_TXT"))
    Mid permet d'extraire une chaîne de caractères entre 2 positions.
    Instr (ou InstrRev) permet de trouver un caractère dans une chaîne.

    Avec tout ça il doit être possible de trouver le nombre avant _2 et de l'incrémenter.

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Si tes titres sont bien connus, je propose ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Col As Integer
    With Sheets("Extract")
        For Col = 43 To .Cells(1, Columns.Count).End(xlToLeft).Column
            .Cells(1, Col).Value = IIf(Right(.Cells(1, Col).Value, 4) = "_TXT", "o_" & Left(.Cells(1, Col).Value, Len(Cells(1, Col).Value) - 4), .Cells(1, Col).Value)
        Next Col
    End With

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Data Processor
    Inscrit en
    Novembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Data Processor
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2009
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Super !!! Merci à vous 2.

    Anthony

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/06/2011, 10h40
  2. Réponses: 2
    Dernier message: 12/11/2009, 16h34
  3. Réponses: 2
    Dernier message: 08/07/2008, 11h50
  4. Réponses: 4
    Dernier message: 23/04/2007, 12h01
  5. Valeur numérique dans une zone de texte
    Par KEROZEN dans le forum IHM
    Réponses: 3
    Dernier message: 30/05/2006, 08h43

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