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 :

Compter le nombre de cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 29
    Par défaut Compter le nombre de cellules
    Bonjour,
    J'ai un fichier avec les valeurs du CAC40, j'ai une valeur par feuille, je souhaite calculer le rendement quotidien de chaque action mais chaque actions ne possède pas le même nombre de cellule pour leurs cotation, ma boucle ne fonctionne donc pas. Je souhaitais donc savoir comment faire pour obtenir le nombre de cellule et ainsi l'exploiter dans mon calcul bien que celui-ci soit diffère à chaque feuille. Voici mon code qui ne fonctionne pas

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Option Explicit
     
     
    Sub rentabilité()
     
    Dim rdt As Double
    Dim k As Long
    Dim j As Long
    Dim i As Long
    Dim count As Long
    Dim cells As Variant
     
     
    k = Sheets.count
     
    rdt = 0
    count = 2
    cells = 0
     
    For i = 2 To k
    Sheets(i).Activate
     
    'For Each cells In columns(8)
     
     
    If cells.Value = "" Then
    count = count + 1
    End If
     
    Next cells
     
    Range("I2").Value = count
     
    For j = 1 To Range("Recap!I2").Value
     
    If Range("E" & j).Value <> 0 Then
    rdt = CDbl((Range("E" & j + 2).Value - Range("E" & j + 1).Value) / Range("E" & j + 1).Value)
    Else
    rdt = 0
    End If
     
    Range("H" & j + 2).Value = rdt
     
     
    Next j
     
     
     
    Next i
     
     
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    Je ne vois pas comment est construite la feuille mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DerniereLigne = Selection.SpecialCells(xlCellTypeLastCell).Row
    donne la derniere ligne.

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Peux-tu s'il te plait dorénavant penser à présenter tes codes entre balises code ? (sans ces balises, la "lisibilité" est compromise).
    Comment peux -tu écrire à la fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim cells As Variant
    ..
    cells = 0
    ..
    If cells.Value = "" Then
    Ce n'est pas sérieux !
    Déjà : Cells est un mot réservé de VBA.
    Par ailleurs :
    à quelle boucle for correspond ce
    ?
    Commence s'il te plait par la correction de ces deux aspects très élémentaires. Ce sera un premier pas indispensable.

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Voici ton 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     Sub rentabilité()
     Dim rdt As Double
     Dim k As Long
     Dim j As Long
     Dim i As Long
     Dim count As Long
     Dim cells As Variant
         k = Sheets.count
         rdt = 0
         count = 2
         cells = 0
         For i = 2 To k
             Sheets(i).Activate
             For Each cells In columns(8)
                 If cells.Value = "" Then
                       count = count + 1
                End If
             Next cells
             Range("I2").Value = count
             For j = 1 To Range("Recap!I2").Value
                 If Range("E" & j).Value <> 0 Then
                     rdt = CDbl((Range("E" & j + 2).Value - Range("E" & j + 1).Value) / Range("E" & j + 1).Value)
                 Else
                     rdt = 0
                End If
                Range("H" & j + 2).Value = rdt
            Next j
         Next i
     End Sub
    1. Nom réservé :
    Come on te l'a déjà dit précédemment, Cells est un nom réservé en VBA. Tu ne peux pas l'utiliser comme nom de variables. Dorénavant, dans la suite de mon message, je remplacerai tous tes "Cells" par "cel".

    2. Déclaration des variables et objets : http://silkyroad.developpez.com/VBA/LesVariables/
    Tu veux faire une boucle sur des cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cel In columns(8)
    mais tu ne déclares pas cel en tant que cellule. Il y a un type d'objet pour les cellules : Range
    cel est une cellule et plus loin tu écris or 0 est un entier. Dans la "vraie vie", c'est comme si tu disais, "je pose la banane égale à 0", ça ne veut rien dire
    Petite remarque au passage : tu n'as pas besoin "d'intialiser" une variable avant une boucle, si c'est ce que tu voulais faire avec cel = 0.
    D'autre part, d'après ce que je comprends de ton code, tu n'as pas besoin non plus d'initialiser ta variable rdt.

    3. Select et Activate
    Evite au maximum d'utiliser Select et Activate. Précise-le plutôt à chaque fois que tu veux travailler dans une feuille en particulier. Tu peux utiliser le bloc With...End With, si tu dois travailler longtemps sur la même feuille.
    N'écris pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets(i).Activate
    Range("A1").Value = "toto"

    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets(i).Range("A1").Value = "toto"
        'ou
    With Sheets(i)
        .Range("A1").Value = "toto"
    End With
    4. Boucle for sur une colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cel In columns(8)
    Veux-tu vraiment faire une boucle sur toutes les cellules d'une colonne? Et pour regarder si elles sont vides? Connais-tu la fonction NB.SI en Excel? Tu peux trouver l'équivalent en VBA, avec : Application.CountIf

    5. Feuilles sélectionnées
    Ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("I2").Value = count
    For j = 1 To Range("Recap!I2").Value
    Est-ce que, par hasard, tu veux que dans la cellule I2 de la feuille Recap, il y ait la valeur "count"? Si c'est le cas : fais attention à la feuille Active, tu n'écris pas count dans la feuille Recap ici, mais dans la feuille Sheets(i) que tu as activée plus haut.
    Mais, pourquoi passes-tu par une cellule? Pourquoi n'utilises-tu pas count directement dans ta boucle For?

Discussions similaires

  1. Compter le nombre de cellule non vide
    Par christian ler dans le forum Excel
    Réponses: 5
    Dernier message: 08/03/2007, 20h44
  2. Réponses: 2
    Dernier message: 07/03/2007, 15h09
  3. Compter le nombre de cellule non vide
    Par christian ler dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/03/2007, 11h24
  4. compter le nombre de cellules commencant par
    Par euskadi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2006, 13h36
  5. Compter le nombre de cellule
    Par flyfrog dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/06/2006, 14h38

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