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 :

Extraire les deux dernieres lettres d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 42
    Points : 31
    Points
    31
    Par défaut Extraire les deux dernieres lettres d'une cellule
    Bonjour,

    j'ai plusieurs cellules de la forme "ANI1_n_HI" et "ANI1_n_LO"
    n etant un chiffre allant de 1 a 20
    J'aimerais recuperer les deux dernieres lettres de ces cellules (Hi ou Lo) mais je n'y arrive pas.
    J'ai essyer avec la fct trim(split) mais vu qu'il y a deux underscores je ne peux pas isoler le Hi ou le Lo
    Auriez vous une idée ?

    Merci d'avance?

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    il y as d'autre fonction de chaine que trim ... style Right

    voir :
    I-C. Extraire une portion de caractères en partant de la droite


  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    c'est pas DROITE() dans Excel ?
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par cafeine
    c'est pas DROITE() dans Excel ?
    oui pour une formule dans une cellule... mais en code VBA c'est Right

  5. #5
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    Sous Excel, on peut écrire :
    =DROITE(C5;2)

    et faire du copier/coller dans toutes les cellules ou on veut récupérer les 2 lettres.

    C5 est la référence de la cellule de type "ANI1_n_HI" et "ANI1_n_LO"

    Sous vba voici un ex de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D6").Value = Right(Range("C6").Value, 2)

  6. #6
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    Voici une macro qui extrait les 2 derniers caractères d'une colonne de données, et elle recopie ces 2 caractères sur la colonne de droite. La variable compteur "co" est paramétrable, et vaut 50 dans l'exemple. La macro teste le contenu de la cellule et s'arrête après 50 cellules vides.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim inc As Integer, co As Integer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Extraire()
     
    inc = 0: co = 0
    Do Until co = 50
    If ActiveCell.Offset(inc, -1) = "" Then co = co + 1
    ActiveCell.Offset(inc, 0) = Right(ActiveCell.Offset(inc, -1), 2)
    inc = inc + 1
    Loop
     
    End Sub

  7. #7
    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 : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Lexot2, plusieurs commentaires:
    Tu ne déclares aucune variable.
    Inutile de parcourir des cellules vides.
    Que se passe-t-il si tu n'as pas sélectionné la première cellule de ta colonne avant de lancer ta macro?

    Voici une amélioration de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Extraire()
      Dim rCol As Range
      Dim rCell As Range
      Dim wks As Worksheet
      Set wks = Sheets("LaFeuille")
      Set rCol = Range(wks.Cells(1, 1), _
                wks.Cells(wks.Cells.SpecialCells(xlLastCell).Row, 1))
      ' ou Set rCol = Range(wks.Cells(1, 1), wks.Cells(65535, 1).End(xlUp))
      For Each rCell In rCol
        rCell.Offset(0, 1) = Right(rCell, 2)
      Next rCell
    End Sub
    Essaye d'en comprendre les améliorations.
    Il peut être mis dans un module plutôt que dans le code de la feuille concernée.
    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!

  8. #8
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Bonsoir

    Merci AlainTech pour l'amélioration de mon code.
    Précisons toutefois, que la programmation en vba excel n'est qu'un hobby, et que je suis toujours satisfait quand je progresse.

    En tant qu'électronicien, j'ai une assez bonne connaissance de certains langages assembleur, et dans l'algorithmique en général. J'aurai toujours beaucoup à apprendre dans ce langage, étant donné que je suis débutant.

    Néanmoins, j'ai écrit :
    Dim inc As Integer, co As Integer
    ce qui veut dire que mes variables sont déclarées. Avec plus d'expérience, j'aurai davantage de maîtrise dans vba excel.

    J'ai réalisé le jeu Nimb25. Si tu pouvais l'essayer et me dire ce que tu en penses, j'en serais ravi. Ce jeu m'a servi de tremplin en vba. Pour mon travail, je n'utilise pas le vba.

  9. #9
    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 : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Sorry, autant pour moi.

    Vu que les déclarations étaient en dehors de la Sub, je ne les avais pas remarquées.

    Ceci dit, voici bien un cas où on a intérêt à déclarer les variables en local.
    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. Extraire les deux premières lettres des mots
    Par jakadam dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/08/2011, 20h20
  2. [XL-2003] comment récupérer les 4 dernier chiffres d'une cellule
    Par bosk1000 dans le forum Excel
    Réponses: 4
    Dernier message: 27/08/2009, 15h34
  3. extraire les nombres à l'intérieur d'une cellule
    Par soipx dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2009, 18h23
  4. choper les deux derniers caractères d'une variable
    Par Mangacker dans le forum C++Builder
    Réponses: 12
    Dernier message: 14/11/2007, 19h08
  5. Récupérer les deux premières lettres d'une chaine
    Par moscovisci dans le forum ASP
    Réponses: 3
    Dernier message: 10/01/2006, 14h53

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