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 :

Formule SI/ET/OU en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut Formule SI/ET/OU en VBA
    Bonjour,

    Je voudrais coder sur VBA cette formule :

    Si(ET(Q2="";OU(H2="001121";H2="002160"; H2="001170");ABS(R2<15000);"PAS DE DECOMPTE";"DECOMPTE A EMETTRE")).

    Voici mon codage mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     If .Cells(j, "Q") = "" And somme < 15000 Or .Cells(j, "H").Value = "002160" Or .Cells(j, "H").Value = "001170" Or .Cells(j, "H").Value = "001121" Then 
    .Cells(j, "M") = "PAS DE DECOMPTE" Else .Cells(j, "M") = "DECOMPTE A EMETTRE"
     
    End If
    Pouvez vous me corrigé sur mon codage svp.

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    chef de projet transverse MOE
    Inscrit en
    Janvier 2015
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : chef de projet transverse MOE
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 121
    Par défaut
    Il manque les parenthèses autour des or et un or doit devenir un and.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If .Cells(j, "Q") = "" And somme < 15000 and (.Cells(j, "H").Value = "002160" Or .Cells(j, "H").Value = "001170" Or .Cells(j, "H").Value = "001121") Then 
    .Cells(j, "M") = "PAS DE DECOMPTE" Else .Cells(j, "M") = "DECOMPTE A EMETTRE"
     
    End If

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    Merci beaucoup Tylert !

    Après modification ca m'affiche un message d'erreur : " Erreur de compilation : End If sans bloc If"

    Voici le code en entier :

    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
    Sub Test()
     
    With Sheets("SUIVTRANS EN COURS")
    derligne = .Range("A" & Rows.Count).End(xlUp).Row
     
    For j = 2 To derligne
     
     somme = 0
            codeP = .Cells(j, "H")
            For i = LBound(Tablo, 1) To UBound(Tablo, 1)
                If .Cells(j, "J") = Tablo(i, 1) Then
                    If .Cells(i + 1, "H") <> codeP Then
                        GoTo pasDeCommentaire
                    Else
                        somme = somme + CDbl(Tablo(i, 2))
                    End If
                End If
    'ANNULATION TECHNIQUE (5)
     
             ' If Mid(.Cells(j, "F").Text, 5, 1) = "A" And Mid(.Cells(j, "F").Text, 1, 1) = "S" Then .Cells(j, "M").Value = "ANNULATION TECHNIQUE" Else .Cells(j, "M").Value = ""
       ' End If
     
            If .Cells(j, "Q") = "" And somme < 15000 And (.Cells(j, "H").Value = "002160" Or .Cells(j, "H").Value = "001170" Or .Cells(j, "H").Value = "001121") Then .Cells(j, "M") = "PAS DE DECOMPTE" Else .Cells(j, "M") = "DECOMPTE A EMETTRE"
            End If
            Next j
     
    End With
    pasDeCommentaire:
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    C'est bon, j'ai résolu le problème !

    Merci de ton aide pour le codage !

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    Bonjour,

    Je ne comprends pas pourquoi ma formule ne fonctionne pas en VBA :

    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
     Sub SuiteMACROSIAFinal()
     
     
    'PAS DE DECOMPTE OU DECOMPTE A EMETTRE(6)
    '(Autre formule sans enregistrement mais fonctionne pas(6))
     
    With Sheets("SUIVTRANS EN COURS")
     For j = 2 To Derligne
     
            If .Cells(j,"N")= "" And Cells(j, "Q") = "" And Cells(j, "R") < 15000 And Cells(j, "H").Value = "002160" Or Cells(j, "H").Value = "001170" Or Cells(j, "H").Value = "001121") Then
            Cells(j, "M") = "PAS DE DECOMPTE"
            Else: Cells(j, "M") = "DECOMPTE A EMETTRE"
            End If
            End With
            Next j
     
    End Sub
    Il s'agit de cette formule si que je veux mettre en VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(N7="";Q7="";OU(H7="001121";H7="001170";H7="002160");ABS(R7)<15000);"PAS DE DECOMPTE";"DECOMPTE A EMETTRE")
    Merci !!

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est normal que certaines Cells soient reliées au With et d'autres non ?

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

Discussions similaires

  1. introduire formule dans une cellule via VBA
    Par lilly91 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/02/2010, 16h16
  2. [XL-2007] Résulats différents avec Datdif dans formule Excel et Datediff en VBA ?
    Par Jay29 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/10/2009, 16h12
  3. Inscrire une formule dans une cellule par VBA
    Par marc56 dans le forum Excel
    Réponses: 6
    Dernier message: 23/11/2008, 23h57
  4. Formule excel non reconnue en VBA
    Par geopolux dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/10/2008, 18h05
  5. Formule et variable (déplacé forum vba)
    Par choupinette370 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/11/2007, 23h08

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