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 :

Enregistrement de valeur entre [ ] VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 32
    Par défaut Enregistrement de valeur entre [ ] VBA
    Bonjour,

    Je suis coincé :/ . J'enregistre la valeur d'une cellule dans une variable, en sélectionnant la ligne puis en allant chercher le nom de la colonne correspondante.
    Les informations que j'enregistre commence par une suite de [ ] contenant des informations que je souhaiterais isoler dans une autre variable.
    Le problème, c'est que je n'arrive pas a voir comment faire une sorte pour extraire la valeur entre le premier crochet et le dernier.
    J'ai essayé avec LEN, mais il me semble que je ne mis prend pas de la bonne façon. Quelqu'un pourrait-il m'éclairer?

  2. #2
    Expert éminent


    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
    Par défaut
    as-tu plusieurs [xxx] dans tes variables , peut-on voir un exemple du contenu de celle-ci ...

    tu devrais pouvoir extraire la valeur grâce à InStr pour trouver la position de "[" et de "]" puis Mid pour extraire la valeur ... voir

  3. #3
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 32
    Par défaut
    entre mes crochets j'ai des valeurs alphanumérique dans le genre [PARIS][BRUXELLES] [ETC] et s'en suit des données non encadrées.

  4. #4
    Expert éminent


    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
    Par défaut
    et pour ce qui est de InStr et Mid tu as cherché ?
    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
    Dim MaChaine As String
    Dim iDeb As Integer
    Dim iFin As Integer
    MaChaine = "entre mes crochets j'ai des valeurs alphanumrique dans le genre [PARIS][BRUXELLES][ETC] et s'en suit des donnes non encadres."
    iDeb = InStr(1, MaChaine, "[")
    While iDeb > 0
        iFin = InStr(iDeb, MaChaine, "]")
        If iFin = 0 Then
                MsgBox "Erreur manque crochet fermant"
                iDeb = 0
         Else
            Debug.Print Mid(MaChaine, iDeb + 1, iFin - iDeb - 1)
            iDeb = InStr(iFin, MaChaine, "[")
        End If
    Wend

  5. #5
    Expert éminent 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
    Par défaut
    Bonsoir
    Une autre proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Test()
    Dim Str As String
    Dim i As Integer
    Dim Tb
     
    With Worksheets("Feuil1")
        Str = .Range("A1")                                  'Str=[PARIS][BRUXELLES][ETC]
        Tb = Split(Str, "]")
        For i = 0 To UBound(Tb)-1
            .Range("B" & i + 1).Value = Mid(Tb(i), 2)
        Next i
    End With
    End Sub

  6. #6
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 32
    Par défaut
    Bonsoir et merci pour vos réponse, j'ai testé avec left aussi sans succes

  7. #7
    Expert éminent


    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
    Par défaut
    Citation Envoyé par nocontrol Voir le message
    Bonsoir et merci pour vos réponse, j'ai testé avec left aussi sans succes
    avec left seul tu peu pas ...

    as tu essayé d'adapter l'un des deux codes..?

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut code
    Peut être devrais-tu poster ton code, ainsi nous pourrions voir les erreurs que tu as fait. Cela t'aidera à t'améliorer


  9. #9
    Membre averti
    Inscrit en
    Juillet 2011
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 32
    Par défaut
    J 'ai modifié un peu le code pour au contraire récuperer uniquement les informations en dehors des crochets.
    J'ai un peu bidouillé les [ ] se trouvant toujours au début.

    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
    lSummaryValue = lSummaryValue & "["  
    ' J'ajoute un [ pour récupèrer les infos entre ] et
    ' [ pour ne pas avoir les données entre [ ]
     
     MaChaine2 = lSummaryValue
     
     iFin = InStr(1, MaChaine2, "]")
      While iFin > 0
             iDeb = InStr(iFin, MaChaine2, "[")
                    lSummaryValue = Mid(MaChaine2, iFin + 1, iDeb - iFin - 1)
                    iFin = InStr(iDeb, MaChaine2, "]")
      Wend
     
     lSummaryValue = Replace(lSummaryValue, "[", "")
     lSummaryValue = Replace(lSummaryValue, "]", "")

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

Discussions similaires

  1. [Python 3.X] enregistrer les valeurs entrées, module tkinter
    Par duwkxu dans le forum Général Python
    Réponses: 4
    Dernier message: 17/05/2015, 11h17
  2. Réponses: 2
    Dernier message: 22/04/2014, 13h40
  3. Réponses: 7
    Dernier message: 29/06/2007, 07h45
  4. [XI] Progression d'une valeur entre 2 enregistrements
    Par Creess dans le forum SAP Crystal Reports
    Réponses: 16
    Dernier message: 23/04/2007, 11h35
  5. [VBA-E] Comparer les valeurs entre classeur
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2006, 12h32

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