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 :

Macro nombre lignes variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Contrôle
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Contrôle

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut Macro nombre lignes variable
    Bonjour à tous,

    Etant complètement nul pour ce qui est des macros VBA sur excel (hormis avec le bouton enregistré), je sollicite votre aide
    1/ comment transformer les données dans les colonnes C & D en nombre. Ici la liste fait 16 lignes mais cela peut-être très variable
    2/ comment faire des calculs (moyenne/min/max) sur chaque de ces colonnes sachant que la aussi le nombre de lignes est variable

    merci pour votre aide






  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,

    Voici une façon de faire avec la feuille1 active, sinon ajouter le nom de la feuille (Sheets("Feuil1").Range.....)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim I As Long, nbLignes As Long
     
        nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
     
        For I = 4 To nbLignes
            Range("C" & I) = Range("C" & I) * 1
            Range("D" & I) = Range("D" & I) * 1
        Next
        Range("E4:E" & nbLignes).Formula = "La formule telle que tu l'écrirais en E4, mais en anglais et avec des virgules au lieu de points-virgules"

  3. #3
    Membre à l'essai
    Homme Profil pro
    Contrôle
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Contrôle

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut
    Bonjour,

    Merci pour ton aide Parmi.
    Malheureusement j'ai une erreur : Erreur d’exécution 13 - Incompatibilité de type

    Peux-être car la multiplication est impossible sur Range("C" & I) car ce n'est pas un nombre ?

  4. #4
    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
    Effectivement, si ce ne sont pas des chiffres, ça pourrait planter.
    On peut vérifier avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        For I = 4 To nbLignes
            If IsNumeric(Range("C" & I)) then Range("C" & I) = Range("C" & I) * 1
            If IsNumeric(Range("D" & I)) then Range("D" & I) = Range("D" & I) * 1
        Next

  5. #5
    Membre à l'essai
    Homme Profil pro
    Contrôle
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Contrôle

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut
    cela n'a pas d'effet.
    Je pense que je vais plutôt m'orienter vers une conversion des . en ,
    avec l'outil remplacer ca fonctionne, je vais essayer de trouver une macro pour faire cela

  6. #6
    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
    C'est donc dire que tes nombres ne sont pas reconnu comme tels par Excel (Windows)
    Utilise l'enregistreur de macro pour remplacer les "."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("C").Replace ".", ","

  7. #7
    Membre à l'essai
    Homme Profil pro
    Contrôle
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Contrôle

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut
    nouveau problème : le point n'est pas remplacé par une virgule mais la valeur affichée correspond à la valeur initale multiplié x 10^14 !!!
    par ex 1.54 devient 154 000 000 000 000

    le je suis vraiment perdu

  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
    Comment es-tu arrivé à ce résultat ?
    Par macro ou en utilisant l'outil Remplacer ?
    De quel type sont les cellules ? Texte, Standard, Nombre ?

  9. #9
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour à tous,

    Je n'ai pas tout lu, mais, j'ai redécouvert dans mon aide de VBA quelque chose qui pourrait peut-être vous intéresser:

    Référence du développeur Excel
    Application.DecimalSeparator, propriété
    Cette propriété renvoie ou définit le caractère utilisé en tant que séparateur décimal comme un objet de type String. En lecture-écriture.
    Syntaxe

    expression.DecimalSeparator

    expression Variable qui représente un objet Application.

    Exemple


    Cet exemple montre comment placer « 1,234,567.89 » dans la cellule A1, puis comment changer les séparateurs système en tirets pour les séparateurs de décimales et de milliers.

    Visual Basic pour Applications
    Sub ChangeSystemSeparators()

    Range("A1").Formula = "1,234,567.89"
    MsgBox "The system separators will now change."

    ' Define separators and apply.
    Application.DecimalSeparator = "-"
    Application.ThousandsSeparator = "-"
    Application.UseSystemSeparators = False

    End Sub

  10. #10
    Membre à l'essai
    Homme Profil pro
    Contrôle
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Contrôle

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Par défaut
    Mes cellules ont un format texte.
    Lorsque le rechercher/remplacer se fait via excel directement, pas de problème le . et bien remplacé par une , et le contenu des cellules est bien reconnu en tant que nombre
    Mais lorsque cette même manipulation se fait via une macro, il n'y a plus un changement . par , mais une multiplication par 10^14

  11. #11
    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
    Bonjour,

    montre nous ta macro de remplacement entre balises de codes : [code] [/code]

    et aussi une exemple de texte à convertir en nombre ..

  12. #12
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Au cas où cela serait utile, j'ai redécouvert ceci dans mon aide de VBA:

    Référence du développeur Excel
    Application.DecimalSeparator, propriété
    Cette propriété renvoie ou définit le caractère utilisé en tant que séparateur décimal comme un objet de type String. En lecture-écriture.
    Syntaxe

    expression.DecimalSeparator

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/07/2009, 16h38
  2. Réponses: 2
    Dernier message: 06/05/2009, 15h57
  3. Réponses: 2
    Dernier message: 18/08/2008, 18h53
  4. Formule SI sur nombre de lignes variables
    Par Nad777 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/03/2008, 12h23
  5. Selection plage de cellule au nombre de lignes variable
    Par yoann7 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/11/2007, 09h30

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