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 :

[VBA-E] tester la valeur d'une plage de données sans boucle


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 103
    Points
    103
    Par défaut [VBA-E] tester la valeur d'une plage de données sans boucle
    Bonjour,
    nouveau petit soucis, (lié à mon erreur 2036), je voudrais tester d'un seul coup la valeur de toute une plage de données. En fait j'aimerai utiliser une fonction qui ne fonctionne que si la plage de données n'est pas vide.
    Pour cela, j'ai utilisé ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       If Range("AG" & indic_ligne_deb & ":AG" & indic_ligne_fin) <> "" Then
                    Worksheets("Stat_plus_CA").Select
                    Worksheets("Stat_plus_CA").Cells(ligne_stat, 16).Select
                    Selection.NumberFormat = "General"
                    ActiveCell.FormulaR1C1 = "=AVERAGE(Client_alloc!R[" & indic_ligne_deb & "]C[17]:R[" & indic_ligne_fin & "]C[17])"
                    End If
    Forcément, j'ai un message d'erreur qui me dit que je ne peux pas faire ca sur la plage range.
    Quelqu'un serait-il comment faire, sans boucle pour tester mon range???

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Mine de rien, ta question est triple.
    1 - Selection d'une plage de cellules (renseignées) ?
    2.1 - Ecrire une formule dans une cellule ?
    2.2 - Ecrire la même formule dans toutes les cellules de la plage ?
    Tu peux préciser ?
    A+

    Question subsidiaire :
    3 - As-tu des lignes ou des colonnes entièrement vides dans ta plage ?

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 103
    Points
    103
    Par défaut
    alors,
    la plage est renseignée, mais parfois elle est vide. Je veux calculer la moyenne de cette plage et la mettre dans une cellule d'une autre page. Le problème c'est que quand la plage est vide, mon calcul me donne soit: #DIV/0!# soit #NOMBRE!# et du coup je ne peux pas retravailler sur cette cellule.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 103
    Points
    103
    Par défaut
    et oui, j'ai une colonne entièrement vide dans ma plage et justelment quand c'est le cas je voudrais ne pas faire le calcul dessus.

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Dans Excel il y a "quelque chose" (!) qui permet de faire ça, enfin, il me semble bien. Je ne l'ai pas en mémoire mais ça doit pouvoir se retrouver avec MOYENNE. Si tu trouves de ton côté, le passer en VBA devrait pouvoir se faire ave WorksheetFunction.
    Tu regardes ?
    A+

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai vérifié, c'est bien ça.
    Citation Envoyé par L'aide
    Les arguments doivent être soit des nombres, soit des noms, des matrices ou des références contenant des nombres.
    Si une matrice ou une référence utilisée comme argument contient du texte, des valeurs logiques ou des cellules vides, ces valeurs ne sont pas prises en compte. En revanche, les cellules contenant la valeur 0 sont prises en compte.
    Avec une colonne vide dans la première plage, la moyenne est la même que celle de la seconde plage n'ayant pas de colonne vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =MOYENNE(LC(-3):L(12)C(-1))
    =MOYENNE(LC(-3):L(12)C(-2))
    Ce qui devrait donner dans VBA quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne = Application.WorksheetFunction.Average.Range(Cells(8, 1), Cells(20, 2))
    Hélas, chez moi, Average n'est pas reconnu. Doit me manquer une référence (?) ou alors la syntaxe n'est pas la bonne
    Je laisse ça à ceux qui savent...
    Je cherche de mon côté
    A+

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour


    Pour compter le nombre de cellules non vides dans une plage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Plage As Range
     
    Set Plage = Range("A1:A10")
    MsgBox Application.WorksheetFunction.CountA(Plage)


    chez moi, Average n'est pas reconnu. Doit me manquer une référence (?) ou alors la syntaxe n'est pas la bonne
    Tu peux tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne = Application.WorksheetFunction.Average(Cells(8, 1), Cells(20, 2))

    bonne soirée
    michel

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Merci Michel ! Je vais passer une meilleure soirée... D'ailleurs je vais aller me coucher tout de suite

  9. #9
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 103
    Points
    103
    Par défaut
    c bon g fé otrement merci kan meme d'avoir essayé

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

Discussions similaires

  1. [XL-2003] Tester présence d'une valeur sur une plage donnée
    Par Monsieur Peck dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/04/2010, 18h51
  2. Valeur d'une plage de données
    Par nicolav dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/08/2009, 18h32
  3. Réponses: 5
    Dernier message: 24/08/2007, 15h42
  4. [VBA] tester la valeur d'une checkbox
    Par titof90 dans le forum VBA Access
    Réponses: 9
    Dernier message: 25/04/2007, 11h40
  5. [VBA-E] Effacer les valeurs d'une plage de cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/06/2006, 11h07

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