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 :

Extraction de chiffres depuis une cellule [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Janvier 2013
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 149
    Par défaut Extraction de chiffres depuis une cellule
    Bonjour,

    Ma cellule A7 contient le lieu de naissance de personnes sous la forme :
    Ville - N° département - Pays

    Exemples :
    Rennes - 35 - France
    Montpellier - 34 - France
    Fort de France - 974 - Tahiti

    Comment puis-je récupérer uniquement les chiffres contenus dans cette cellule et les recopier automatiquement dans la cellule qui contient le code s'il vous plaît ?

    La recopie se fait d'une feuille à l'autre. Pour la recopie simple j'utilise déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI('Feuill1'!$R$1<>"";'Feuill1'!$R$1;"")
    Merci pour votre aide !

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    bonjour une idée à exploiter,
    tu créer ta fonction de recherche des chiffre par exemple:
    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
    Function chiffre(mastring As Range) As String
    Dim Cible As String
    Cible = mastring.Value
     
     
        For i = 1 To Len(Cible)
            If IsNumeric(Mid(Cible, i, 1)) Then
            Nombre = Val(Mid(Cible, i, Len(Cible) - i + 1))
            resultat = resultat & Nombre & vbLf
            i = i + Len(Str(Nombre)) - 1
            End If
        Next
     
     chiffre = resultat
    End Function
    code à copier dans un module.
    la fonction s'appelle chiffre().

    ensuite par exemple dans la cellule A1 tu met:si ta chaine de caractère est en A7

    attention dans la formule mettre uniquement une cellule pas une plage de cellule

    c'est un exemple, il doit certainement y avoir beaucoup mieux

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Avec une formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(DROITE(A7;NBCAR(A7)-TROUVE("-";A7)-1);2)
    ou en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Val(Split(Range("A1").Value, "-")(1))

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ou une autre fonction également :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Function IsolerLeDepartement(Cellule As Range)
     
    Dim I As Integer
    Dim PositionTiretDebut As Integer
    Dim PositionTiretFin As Integer
     
     
      IsolerLeDepartement = 0
      PositionTiretDebut = 0
      PositionTiretFin = 0
     
      For I = 1 To Len(Cellule)
        If Mid(Cellule, I, 1) = "-" Then
            PositionTiretDebut = I
            Exit For
        End If
      Next I
     
      If PositionTiretDebut > 0 Then
     
          If PositionTiretDebut + 2 <= Len(Cellule) Then
             For I = PositionTiretDebut + 1 To Len(Cellule)
                    If Mid(Cellule, I, 1) = "-" Then
                      PositionTiretFin = I
                      Exit For
                    End If
            Next I
          End If
     
          IsolerLeDepartement = Mid(Cellule, PositionTiretDebut + 2, PositionTiretFin - (PositionTiretDebut + 2))
     
      End If
     
     
    End Function
    Cordialement.

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Pour remplacer les infos de la colonne A par le Dept

    Attention, l'exécution de code est sans retour, faire une sauvegarde avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub MaProc()
     
    Dim i As Long
     
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        Range("A" & i).Value = Val(Split(Range("A" & i).Value, "-")(1))
    Next i
     
    End Sub

  6. #6
    Membre très actif
    Inscrit en
    Janvier 2013
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 149
    Par défaut
    Citation Envoyé par jfontaine Voir le message
    Bonjour,

    Avec une formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(DROITE(A7;NBCAR(A7)-TROUVE("-";A7)-1);2)
    ou en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Val(Split(Range("A1").Value, "-")(1))
    Merci beaucoup ! Ça marche bien. Et c'est la fonction formule qui m'intéresse.
    En revanche, petit problème :

    Chamonix Mont-Blanc - 74 - France... C'est "la" qui se recopie au lieu du 74... Comment corriger ça ?

  7. #7
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Une petit amélioration, mais il ne faudrait pas que le pays comporte aussi un trait d'union
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim i As Long
    Dim str() As String
     
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        str = Split(Range("A" & i).Value, "-")
        Range("A" & i).Value = Val(str(UBound(str) - 1))
    Next i

  8. #8
    Membre très actif
    Inscrit en
    Janvier 2013
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 149
    Par défaut
    Merci mile fois... Mais sauriez vous m'indiquer le code non pas pour une macro mais pour une formule s'il vous plaît ?

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

Discussions similaires

  1. extraire uniquement les chiffres d'une cellule
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/08/2017, 18h25
  2. Réponses: 11
    Dernier message: 23/07/2010, 11h16
  3. Extraction de chiffres d'une chaîne
    Par olive_le_malin dans le forum C++
    Réponses: 9
    Dernier message: 12/03/2007, 15h16
  4. [VBA-PP]fonction qui écrit un chiffre dans une cellule excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/04/2006, 19h34
  5. [C++.NET] Extraction de nombres depuis une TextBox
    Par KaeRZed dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 19/04/2006, 13h57

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