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 :

Incrémentation de plusieurs fonctions if avec conditions différentes [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    pilote de prestataire
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : pilote de prestataire
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Par défaut Incrémentation de plusieurs fonctions if avec conditions différentes
    Bonsoir,

    Je suis novice en VBA et je souhaite coder un fichier qui contient plusieurs fonctions if mais qui ont chacune des conditions différentes. Ma difficulté se trouve dans la condition si celle ci est fausse, car j'ai fait une boucle qui démarre du début de mon fichier jusqu'à la dernière ligne (variable derl que j'ai définit) qui va me chercher un code et d'après ce code la fonction if renvoie un nombre dans la colonne F. Pour tous les codes les nombres renvoyés sont tous dans la colonne F à des lignes différentes en fonction de la boucle, mais par contre si la condition est fausse je souhaite qu'il n'affiche rien dans la colonne à l'endroit du code cherché et c'est la que je fais appelle aux experts du vba, car pour moi toutes les fonctions quand la condition est fausse sont les mêmes du coup parfois tout s'efface alors que j'ai simplement une condition de fausse et les autres non.
    Je ne sais pas si je suis très clair dans mes explications, mais j'espère que le fichier joint vous aidera à m'aider.

    Merci par avance à vous tous.

    Cordialement

    Voici le code en question :

    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
    Sub Base()
     
    Dim ws As Worksheet
    Dim i As Integer
    Dim derl As Long
     
    Application.ScreenUpdating = False
     
    Set ws = ActiveWorkbook.Worksheets(1)
    derl = ws.Range("B" & Rows.Count).End(xlUp).Row
     
    For i = 6 To derl
    code = ws.Range("B" & i).Value
    statut = ws.Range("D" & i).Value
     
            If code = "101" And IsEmpty(statut) Then
            ws.Cells(i, 6) = ws.Range("M9").Value
            Else
            ws.Cells(i, 6).ClearContents
            End If
     
                If code = "181" And IsEmpty(statut) Then
                ws.Cells(i, 6) = ws.Range("M14").Value
                Else
                ws.Cells(i, 6).ClearContents
                End If
     
                    If ws.Range("M14").Value <> "" And code = "400" Then
                    ws.Cells(i, 6) = ws.Range("M21").Value
                    Else
                    ws.Cells(i, 6).ClearContents
                    End If
     
     
    Next i
     
    End Sub

  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,

    Premièrement, habitue-toi à déclarer toutes tes variables.
    Tu écris
    If code = "101" And IsEmpty(statut) Then
    Est-ce que code vaut bien "101" ou plutôt 101 ?
    C'est-à-dire est-ce que la valeur est une String ou un nombre ...

    Si c'est un nombre, il faut alors enlever les guillemets.
    Pour statut, j'irais avec ""
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If code = 101 And statut = "" Then
    Même chose pour les autres

  3. #3
    Membre habitué
    Homme Profil pro
    pilote de prestataire
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : pilote de prestataire
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Par défaut incrémentation de plusieurs fonctions if avec conditions différentes
    Bonsoir Parmi

    Merci pour la réponse que j'ai prise en compte, par contre le fait de mettre clearcontents à chaque condition fausse sur chaque fonction du coup m'efface mes données quand je lance ma macro. Comment puis je faire de façon à ce que si la condition est fausse rien ne doit s'afficher mais si elle vrai mais données doivent rester afficher et ne pas s'effacer quand je relance ma macro.

    Cordialement

  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
    Comme ceci peut-être ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            If code = "101" And IsEmpty(statut) Then
               ws.Cells(i, 6) = ws.Range("M9").Value
            ElseIf code = "181" And IsEmpty(statut) Then
               ws.Cells(i, 6) = ws.Range("M14").Value
            ElseIf ws.Range("M14").Value <> "" And code = "400" Then
               ws.Cells(i, 6) = ws.Range("M21").Value
            Else
               ws.Cells(i, 6).ClearContents
            End If

  5. #5
    Membre habitué
    Homme Profil pro
    pilote de prestataire
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : pilote de prestataire
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Par défaut incrémentation de plusieurs fonctions if avec conditions différentes
    Merci Parmi à nouveau pour ton aide

    J'ai modifié mon code et effectivement maintenant il n'y a plus de souci le code fonctionne parfaitement.

    Merci beaucoup

    Cordialement

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

Discussions similaires

  1. fonction somme avec condition
    Par damien40 dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/05/2008, 19h33
  2. fonction "REPLACE" avec condition
    Par emilek dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/03/2007, 17h08
  3. plusieurs COUNT sur une seule table avec conditions différentes
    Par dingoth dans le forum Administration
    Réponses: 9
    Dernier message: 20/12/2006, 10h13
  4. [Oracle 10] Fonction ROWNUM avec condition
    Par SQL_Pour_les_Nuls dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/07/2006, 15h06

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