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 :

Syntaxe variables avec CountIf [XL-2013]


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2017
    Messages : 30
    Par défaut Syntaxe variables avec CountIf
    Bonjour le forum,

    Je viens solliciter votre aide.

    Mon classeur Excel est organisé de la manière suivante:
    - Colonne 1: Nom des tâches
    - Colonne 2: Date de début
    - Colonne 3: Date de fin
    - Colonne 4 : Code permettant de différencier les différentes tâches.

    Mon but c'est d'ajouter des valeurs aux colonnes 2 et 3 de mes tâches en fonction du code qu'elles contiennent (colonne 4).

    Je suis donc parti sur un Userform dans lequel je définis dans un Textbox la valeur que je souhaite ajouter à mes colonnes. Ci-dessous mon 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub CommandButton3_Click()  'Bouton Valider
     
    Dim S As Integer, derLig As Integer, i As Integer, f As Worksheet, a As Integer, b As Integer
     
        'modif_duree
        If TextBox1 = "" Then
            Exit Sub
        End If
     
        Set f = Sheets("Feuil1")
        With f
        DerniereLigne = Feuil1.Range("A300").End(xlUp).Address
        L = Range(DerniereLigne).Row
     
    'Compte le nombre total de tâches avec le code Super
     
        For i = 2 To L
        S = WorksheetFunction.CountIf(.Range(.Cells(2, 4), .Cells(i, 4)), "Super")
     
        Next i
     
    'Ajout des valeurs
     
        For i = 2 To L
     
        'Condition uniquement pour la première ligne de Super
        If S = 1 Then
        .Cells(i, 3) = .Cells(i, 3) + ((1 / (S * 3)) * Val(TextBox1))
     
     
        'Condition sur toutes les autres ligne de Super (de la 2èeme à la dernière)
        ElseIf S > 1 Then
                    .Cells(i, 2) = .Cells(i, 2) + ((a - 1 / (S * 3)) * Val(TextBox1))
                    .Cells(i, 3) = .Cells(i, 3) + ((a / (S * 3)) * Val(TextBox1))
        End If
     
        Next i
     
        End With
     
       Set f = Nothing
     
        TextBox1 = ""
    repartition.Hide
    End Sub
    Le principe est le suivant:

    1 - Compter le nombre total de tâches (ou lignes) portant le code Super dans la colonne 4
    2 - Appliquer une première condition Uniquement sur la première tâche avec le code Super
    2 - Appliquer une deuxième condition sur toutes les autres lignes (de la 2 ème à la dernière) portant le code Super.

    La partie du code suivante me permet de déterminer à l'aide de la fonction CountIf le nombre total de lignes avec le code Super:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Compte le nombre total de tâches avec le code Super
     
        For i = 2 To L
        S = WorksheetFunction.CountIf(.Range(.Cells(2, 4), .Cells(i, 4)), "Super")
     
        Next i
    Mon problème vient dans la suite du code. Je n'arrive pas à trouver la bonne syntaxe pour définir ma variable a ni à appliquer les conditions Uniquement sur la première ligne de Super dans un premier temps puis sur toutes les autres lignes de Super dans un deuxième temps dans la partie suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For i = 2 To L
     
        'Condition uniquement pour la première ligne de Super
        If S = 1 Then
        .Cells(i, 3) = .Cells(i, 3) + ((1 / (S * 3)) * Val(TextBox1))
     
     
        'Condition sur toutes les autres ligne de Super (de la 2èeme à la dernière)
        ElseIf S > 1 Then
                    .Cells(i, 2) = .Cells(i, 2) + ((a - 1 / (S * 3)) * Val(TextBox1))
                    .Cells(i, 3) = .Cells(i, 3) + ((a / (S * 3)) * Val(TextBox1))
        End If
     
        Next i
    Je voudrais ajouter dans la colonne 3 de la première ligne portant le code "Super" la valeur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    + ((1 / (S * 3)) * Val(TextBox1))
    Avec S = le nombre total de ligne portant le code Super

    Puis sur toutes les autres lignes toujours avec le code Super en colonne 4 (de la 2 ème à la dernière ligne), ajouter la valeur suivante:

    -Dans la colonne 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    + ((a - 1 / (S * 3)) * Val(TextBox1))
    avec a -1 = le numéro de ligne Super précédent. Si on est à la troisième ligne de Super, a-1 = 2

    -Dans la colonne 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    + ((a / (S * 3)) * Val(TextBox1))
    avec a = le numéro de ligne Super actuel Si on est à la troisième ligne de Super, a =3

    Toujours avec S = le nombre total de lignes de Super.

    Pouvez-vous m'orienter dans ma démarche?

    Je vous remercie d'avance pour votre aide !

    Ci-joint mon classeur Excel.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Syntax setTimeout avec variable.
    Par defacta dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/08/2009, 15h14
  2. syntaxe like avec variable
    Par xirom dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/09/2008, 22h56
  3. Syntaxe Range avec une variable pour la colonne
    Par Spykerman dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/06/2008, 13h50
  4. vba syntaxe dlookup avec 2 variables
    Par Chris 81 dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/11/2007, 16h30
  5. erreur syntaxe variable avec un caractère ":"
    Par wiss20000 dans le forum JDBC
    Réponses: 15
    Dernier message: 19/03/2007, 15h03

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