Effacer une partie d'une cellule Excel

Quentin -  
 Quentin -
Bonjour, je suis novice en VBA et j'aimerais réaliser un code qui permetterai d'éffacer une partie d'une cellule excel.
Je m'explique: dans une cellule excel arrive un signal variable de la forme suivante: 1328;2547;127;22328;9837; et ainsi de suite (les nombres entre les ";" varient eux aussi)

- j'aimerais réaliser un code gérer par un bouton pour éffacer la dernière donnée entrante du signal
(ici: 9837;)
- j'aimerais réaliser un code gérer par un bouton pour éffacer les trois premières données
(ici: 1328;2547;127;)

J'ai naturellement pensé à la fonction Clear sur la cellule, mais c'est ici que je manque d'idées et surtout de compétences. J'aimerais me servir des ";" pour dire à quel endroit éffacer comme les nombres varient.

J'ai conscience que ce que je demande est un peu tordu par les cheveux ! Mais ça m'aiderais beaucoup pour mon stage !

Merci d'avance
Configuration: Windows XP
Firefox 3.0.17

5 réponses

  1. Gord21 Messages postés 928 Statut Membre 289
     
    Bonjour,
    c'est possible avec par exemple les fonction InStr et InStrRev. Tu cherches les points-virgules puis tu utilises les fonctions Right et Left.
    Je peux t'écrire le code mais j'ai besoin d'infos :
    - Dans quelle cellule est ta chaîne de valeurs
    - Est-ce que ta chaîne se termine toujours par un point-virgule
    - Dans quelle cellule veux-tu écrire le résultat

    0
  2. melanie1324
     
    Bonjour,

    voici le code qui devrait t'aider.
    Copie le dans un module vba et lie la macro à un bouton.
    La macro telle qu'elle prend la valeur de la cellule située en B1 (cells(1,2)) à adapter en fonction de tes besoins.

    Sub macro()
    Dim valeur, longueur, nbre As Variant
    valeur = Cells(1, 2) 'valeur est égale à ce que contient la cellule B2 (1ere ligne, 2e colonne)
    longueur = Len(a) 'longueur définit le nombre de caractères contenu dans a
    nbre = 1

    Do While nbre < 4 'permet de boucler afin de supprimer les 3 premières valeurs
    Do While Left(valeur, 1) <> ";" 'détermine quelle est la première valeur à gauche de a et la boucle tourne tant que ce n'est pas un ;
    longueur = longueur - 1
    valeur = Right(valeur, longueur) 'valeur est égale au cointenu de la valeur moins le caratère se trouvant à gauche
    Loop
    If Left(valeur, 1) = ";" Then 'on supprime le ; qui es tle premier caractère de valeur
    longueur = longueur - 1
    valeur = Right(valeur, longueur)
    End If
    nbre = nbre + 1
    Loop

    If Right(valeur, 1) = ";" Then ' fait la même chose que précédemment sauf que cela supprime la dernière donnée
    longueur = longueur - 1
    valeur = Left(valeur, longueur)
    End If
    Do While Right(valeur, 1) <> ";"
    longueur = longueur - 1
    valeur = Left(valeur, b)
    Loop

    If Right(valeur, 1) = ";" Then
    longueur = longueur - 1
    valeur = Left(valeur, longueur)
    End If
    Cells(1, 1) = valeur

    End Sub
    0
  3. Quentin
     
    Salut Gord21,

    Ma chaîne de valeurs se trouve dans la cellule A300,
    La chaîne se termine toujours par ";"
    Mais je souhaite seulement supprimer, pas le réecrire dans une autre cellule

    merci pour ton aide
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    A essayer (mettre A300 au lieu de A1)

    Sub supprimer_dernier()
    tablo = Split(Range("A1"), ";")
    If UBound(tablo) - 1 > 1 Then
        For cptr = 0 To UBound(tablo) - 2
            texto = texto & tablo(cptr) & ";"
        Next
    Else
        MsgBox "2 nombres mini "
        Exit Sub
    End If
    Range("A1") = texto
    End Sub
    
    '-------------------------------------------------------------------
    
    Sub supprimer_3prem()
    tablo = Split(Range("A1"), ";")
    If UBound(tablo) - 1 > 3 Then
        For cptr = 3 To UBound(tablo) - 1
            texto = texto & tablo(cptr) & ";"
        Next
    Else
        MsgBox "3 nombres mini "
        Exit Sub
    End If
    Range("A1") = texto
    End Sub
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Quentin
     
    Merci à tous pour ces réponses si rapide

    Que dire Michel, ta procédure marche à merveille ! merci beaucoup

    Melanie j'ai essayé ta procédure, mais l'erreur 5 apparait.
    A quoi correspond "a", c'est ma chaîne de caractère ? Je vais continuer à chercher, j'aimerais bien savoir le faire !

    Merci
    0