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 :

Num ou alpha


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut Num ou alpha
    bonjour
    débutant en vba :
    je tente de déterminer, dans toutes les cellules d' une colonne bien précise, si les données sont numériques ou alphanumériques
    mais je bloque ^^

    j'ai besoin de votre aide

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Tu pourrais regarder l'aide sous IsNumeric()

  3. #3
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Data Consultant
    Inscrit en
    Juillet 2013
    Messages
    2 976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Data Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2 976
    Billets dans le blog
    2
    Par défaut
    Salut à tous,
    @Bilcosby, Tu peux utiliser IsNumeric (peut être interprété comme un nombre?) ou WorksheetFunction.IsNumber (Est un nombre?) pour déterminer si la valeur est numérique et WorksheetFunction.IsText (Est un texte?) pour déterminer si la valeur est alphanumérique.
    En supposant que tes valeurs sont dans la colonne A, essaie d'implémenter ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TypeDonnees()
    With ThisWorkbook.Sheets("NomFeuille")
    Dim nb AS Long
    nb=.Range("A" & .Rows.Count).End(xlup).Row ' détermine la dernière celle non vide de la colonne A
    For i=1 to nb ' Si tes données commencent à la ligne 1
    'Affiche Numérique dans la colonne B si la valeur est numérique et Alphanumérique si alphanumérique
    If WorksheetFunction.IsNumber(.Range("A" & i).Value) Then
    .Range("B" & i).Value="Numérique"
    Elseif WorksheetFunction.IsText(.Range("A" & i).Value) Then
    .Range("B" & i).Value="Alphanumérique"
    End if
    Next
    End With
    End Sub
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Merci de votre aide
    j'ai cependant un petit souci
    Cela marcherait sauf que :
    il ne fait pas la différence entre alpha et le num, il y a un petit triangle vert en haut à gauche de la cellule concernée => "nombre au format texte"
    Il suffit que je "clic dedans" et le triangle disparait !
    Je relance et là ça marche

    Si je sélectionne la colonne entière et que je mets tout au format "nombre", elle ne le prend pas en compte ! idem avec clic droit sur la dite cellule (sans "rentrer" dedans)

    je ne voie pas comment la repérer si elle est traitée en alpha, étant donnée que la valeur numérique peut être différente..

    Je bloque ^^

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    L'idéal serait que tu transformes toutes données numériques en nombre (voir code)
    C'est souvent le cas quand on importe des données de certains systèmes.
    Les chiffres sont inscrits comme du texte et, du coup, les formules ne trouve rien...

    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
    Sub Changer_VALEUR_en_NOMBRE()
        Dim Cellule As Range, Plage As Range
        Dim nbLignes As Long, nbColonnes As Long
     
        nbLignes = Cells.Find("*", , , , xlByRows, xlPrevious).Row
        nbColonnes = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
     
        Set Plage = Range(Cells(1, 1), Cells(nbLignes, nbColonnes))
     
        Application.Calculation = xlCalculationManual
        For Each Cellule In Plage
            If IsNumeric(Cellule) Then Cellule = Cellule * 1
        Next
        Application.Calculation = xlCalculationAutomatic
     
        MsgBox "OK"
    End Sub

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Formidable merci .....mais ^^
    il m'affiche des zéros dans toutes les cellules vides
    J'ai testé différentes choses en vain !
    Pourrais tu me dire comment l’exécuter sur la colonne D seulement, et si possible, eviter les zéros !

    Si j'avais du temps je m'y serais penché plus sérieusement, mais je me sers que très rarement des macro
    Je suis plutôt net ( php css & js )

    Merci d'avance

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Formidable merci .....mais ^^
    il m'affiche des zéros dans toutes les cellules vides
    je pense qu'il est simple d'adapter le code à parmi à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    If IsNumeric(Cellule) Then Cellule = Cellule * 1
    ...
    en ajoutant une condition du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...and Not IsEmpty(Cellule)...
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Tout à fait d'accord avec casefayere pour les 0.
    Pour la colonne D, change tout simplement la variable Plage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = Range(Cells(1, 4), Cells(nbLignes, 4))

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Voila c'est ok

    Voici ce que j'ai fait grâce à vous ( même si j'ai pas tout compris ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       Dim Cellule As Range, Plage As Range
        Dim nbLignes As Long
     
        nbLignes = Cells.Find("*", , , , xlByRows, xlPrevious).Row
     
     
        Set Plage = Range(Cells(1, 4), Cells(nbLignes, 4))
     
        Application.Calculation = xlCalculationManual
        For Each Cellule In Plage
            If IsNumeric(Cellule) Then Cellule = Cellule * 1
            If Cellule = 0 Then Cellule = ""
        Next
        Application.Calculation = xlCalculationAutomatic

    Merci à vous tous et à bientôt
    .
    .

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    J'aurais écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cellule In Plage
      If IsNumeric(Cellule) And Not IsEmpty(Cellule) Then Cellule = Cellule * 1
    Next
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cellule In Plage
      If IsNumeric(Cellule) And Cellule <> "" Then Cellule = Cellule * 1
    Next
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2014, 11h13
  2. Réponses: 0
    Dernier message: 16/02/2014, 22h30
  3. [COBOL] Alpha -> NUM
    Par Antichoc dans le forum z/OS
    Réponses: 6
    Dernier message: 07/07/2009, 10h19
  4. Alpha blending
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 23/05/2002, 19h37
  5. Alpha blending et Z-buffer directx 8
    Par Cesar4 dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2002, 12h58

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