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 :

Erreur de compilation, Argument non facultatif


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 25
    Points : 13
    Points
    13
    Par défaut Erreur de compilation, Argument non facultatif
    Bonjour,

    J'ai rencontré une erreur de compilation lors du lancement de mon macro ci-dessous:

    1. Celui_la marche correctement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     'count target date passed mitigation actions
     
        If (s1.Range("H8").Offset(j).Value <= s1.Range("B1").Value) And s1.Range("I8").Offset(j) <> "complete" Then
                nbpassed_all = nbpassed_all + 1
        End If
         s.Range("d28").Value = nbpassed_all
    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'count target date passed mitigation actions from previous year
       Dim nb_pass_late As Integer
       nb_pass_late = 0
    Ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s1.Range("I8").Offset(j)

    cette partie affiche une erreur de compilation alors que j'ai utilisé exactement le meme code en haut. je voulais juste avoir le chiffre pour les actions dont l'annee de date est different que Year.s1.Range("B1")
    J'ignore pourquoi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     If (s1.Range("H8").Offset(j).Value <= s1.Range("B1").Value) _
            And s1.Range("I8").Offset(j) <> "complete" _
                And Year.s1.Range("B8").Offset(j) <> Year.s1.Range("B1") Then
     
                 nb_pass_late = nb_pass_late + 1
            End If
     
           s.Range("e28").Value = nb_pass_late


    Si vous pourriez me dire où est mon erreur, ça pourrais bien m'aider.

    Merci beaucoup

  2. #2
    Expert éminent sénior


    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
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    tu ne nous as pas dit ce qu'était tes objets Year , s1 ??

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Voici le code complet:

    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
    53
    54
    55
    56
    57
    58
    59
    Public Sub total_mit()
     
     Dim s As Worksheet
    Set s = Worksheets("Statistic")
     
    Dim s1 As Worksheet
    Set s1 = Worksheets("Mitigation Actions")
     
    Dim all_mit As Long
    Dim nbnop_last As Long
    Dim nbpassed_all As Long
     
     nbnop_last = 0
     all_mit = 0
     nbpassed_all = 0
     
     Dim j As Integer
     j = 0
     
     While (Not (IsEmpty(s1.Range("A8").Offset(j))))
     
         'count total mitigation actions
        If (Not (IsEmpty(s1.Range("A8").Offset(j)))) Then
            all_mit = all_mit + 1
        End If
            s.Range("b28").Value = all_mit
     
        If s1.Range("i8").Offset(j) = "in progress" Then
            nbnop_last = nbnop_last + 1
        End If
            s.Range("c28").Value = nbnop_last
     
     
        'count target date passed mitigation actions
     
        If (s1.Range("H8").Offset(j).Value <= s1.Range("B1").Value) And s1.Range("I8").Offset(j) <> "complete" Then
                nbpassed_all = nbpassed_all + 1
         End If
         s.Range("d28").Value = nbpassed_all
     
        'count target date passed mitigation actions from previous year
       Dim nb_pass_late As Integer
       nb_pass_late = 0
     
           If (s1.Range("H8").Offset(j).Value <= s1.Range("B1").Value) _
           And s1.Range("I8").Offset(j) <> "complete" _
               And Year.s1.Range("B8").Offset(j) <> Year.s1.Range("B1") Then
     
               nb_pass_late = nb_pass_late + 1
            End If
     
           s.Range("e28").Value = nb_pass_late
     
             j = j + 1
     
     
     Wend
     
     End Sub

    s1-c'est une feuille excel
    year-c'est pour avoir l'annee d'un range data afin de les comparer à l'annee d'une cellule data aussi. En effet, c'est 2 IF codes doit compter à peu près la même chose sauf dans la 2ème il y a une condition IF de plus.


  4. #4
    Expert éminent sénior


    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
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par solongo Voir le message
    ...

    year-c'est pour avoir l'annee d'un range data afin de les comparer à l'annee d'une cellule data aussi. En effet, c'est 2 IF codes doit compter à peu près la même chose sauf dans la 2ème il y a une condition IF de plus.

    "un range data" ?

    Si tu veux extraire l'année d'une date year s'utilise ainsi:

    il n'y as pas de point ...

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Ah Merci Bbil. ça beugge plus. Mais ça compte pas correctement: ça affiche 0 alors que ce n'est pas le cas.
    Avez-vous une idée de pk?
    Merciii encore

Discussions similaires

  1. erreur d'execution argument non valide
    Par mahboub dans le forum Access
    Réponses: 1
    Dernier message: 13/12/2006, 20h52
  2. erreur de compilation: argument non facultatif
    Par MCarole dans le forum Access
    Réponses: 10
    Dernier message: 21/07/2006, 13h32
  3. Erreur avec expr : argument non numérique
    Par lastrecrue dans le forum Linux
    Réponses: 5
    Dernier message: 21/05/2006, 16h47
  4. Réponses: 6
    Dernier message: 20/01/2006, 18h42
  5. Réponses: 12
    Dernier message: 26/08/2005, 10h02

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