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 :

Problème de définition de variables


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut Problème de définition de variables
    Bonjour,

    Je suis très rouillé en VBA, c'est ma première macro depuis bientôt 2 ans, et mon niveau d'à l'époque était déjà très faible, c'est dire... Du coup me voilà coincé avec ce problème qui, j'en suis sûr, est tout bête à résoudre. Dans mon code ci-dessous, la macro bloque à cause de la définition de l'objet "TotHT" dans ma formule "SUM" (à ce propos, je n'arrive plus à trouver la manip pour que lorsqu'une macro bloque elle surligne automatiquement la ligne bloquante...). Si je définis "TotHT comme un Integer, c'est bon, mais ça ne me convient pas car il ne me prend pas les décimales. Et en la déclarant comme un Single ça me bloque... Pourriez-vous m'aider à corriger ce code SVP ?

    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
    Sub Compile_Data_Sheet_Facture()
     
    Dim LRP1 As Byte, LRP2 As Byte, LRF1 As Byte, LRF2 As Byte
    Dim TotHT As Single, TotTTC As Single
     
     
    Application.ScreenUpdating = False
     
    'MAJ TCD et copier données dans feuille "Facture"
     
        With Sheets("Pivot")
     
        .PivotTables("Facture1").PivotCache.Refresh
        .PivotTables("Facture2").PivotCache.Refresh
     
        LRP1 = .Cells(.Rows.Count, 1).End(xlUp).Row
        LRP2 = .Cells(.Rows.Count, 4).End(xlUp).Row
     
            .Range("A4:B" & LRP1).Copy Sheets("Facture").Range("T2")
            .Range("D4:E" & LRP2).Copy Sheets("Facture").Range("W2")
     
        End With
     
        With Sheets("Facture")
     
        LRF1 = .Cells(.Rows.Count, 20).End(xlUp).Row
        LRF2 = .Cells(.Rows.Count, 23).End(xlUp).Row
        TotHT = .Range("E2").Value
        TotTTC = .Range("E4").Value
     
            .Range("T" & LRF1).Offset(2, 0) = "Somme :"
            .Range("W" & LRF2).Offset(2, 0) = "Somme :"
            .Range("T" & LRF1).Offset(3, 0) = "Contrôle :"
            .Range("W" & LRF2).Offset(3, 0) = "Contrôle :"
     
                With .Range("U" & LRF1).Offset(2, 0)
                    .Formula = "=+SUM(R[-" & LRF1 & "]C:R[-2]C)"
                    .Value = .Value
                End With
     
                With .Range("X" & LRF2).Offset(2, 0)
                    .Formula = "=+SUM(R[-" & LRF2 & "]C:R[-2]C)"
                    .Value = .Value
                End With
     
                With .Range("U" & LRF1).Offset(3, 0)
                    .Formula = "=IF(R[-1]C-" & TotHT & "=0, ""OK"",""Erreur"")"
                    .Value = .Value
                End With
     
        End With
     
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
     
    MsgBox "Traitement des données effectué avec succès", vbInformation + vbOKOnly, "Calcul automatique"
     
    End Sub
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    bonjour
    et en le déclarants en "Double"

  3. #3
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour rvtoulon,

    Malheureusement ça ne fonctionne pas non plus, ça me met "erreur d'exécution 1004: erreur définie par l'application ou par l'objet"...

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Par défaut
    Bonjour,

    Je pense également que tu devrais le mettre en double.
    Ton problème viens peut-être d'ailleurs.

    Tu peut faire une exécution pas à pas avec F8 dans la fenêtre visual basic pour voir où ton erreur se produit.

    Quant à ton problème de surlignement de la ligne plantée je sais pas trop mais peut-être en allant dans Outils -> Options -> Format de l'éditeur vérifie que texte du point d'exécution soit bien paramétré avec des couleurs (jaune fluo par défaut)

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonjour

    regarde si dans ta cellules de référence il n'y a pas un espace devant les nombres

    sinon tu peux utiliser la fonction "val" sur cette cellules pour être sur d'avoir un numérique

    Et en plus moi je la mettrais en long ta variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TotHT = val(.Range("E2").Value)
        TotTTC =val(.Range("E4").Value)
    je viens de regarder de plus pret la formule je ne pense pas que cela puisse
    marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Formula = "=IF(R[-1]C-" & TotHT & "=0, ""OK"",""Erreur"")"
    R-1 et C- attendent un numeric qui precise l'offset et non pas la value
    du moins je crois

    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses, j'ai testé les différentes solutions proposées. Malheureusement, que je définisse mes variables en Long ou en Double (avec ou sans "Val(...)" devant), la variable prend comme valeur l'arrondi le plus proche de la valeur de ma cellule, ainsi, en arrêtant la macro juste après la formule qui vient comparer mes deux valeurs, voilà ce que ça me donne :

    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
    Sub Compile_Data_Sheet_Facture()
     
    Dim LRP1 As Byte, LRP2 As Byte, LRF1 As Byte, LRF2 As Byte
    Dim TotHT As Long, TotTTC As Long
     
     
    Application.ScreenUpdating = False
     
    'MAJ TCD et copier données dans feuille "Facture"
     
        With Sheets("Pivot")
     
        .PivotTables("Facture1").PivotCache.Refresh
        .PivotTables("Facture2").PivotCache.Refresh
     
        LRP1 = .Cells(.Rows.Count, 1).End(xlUp).Row
        LRP2 = .Cells(.Rows.Count, 4).End(xlUp).Row
     
            .Range("A4:B" & LRP1).Copy Sheets("Facture").Range("T2")
            .Range("D4:E" & LRP2).Copy Sheets("Facture").Range("W2")
     
        End With
     
        With Sheets("Facture")
     
        LRF1 = .Cells(.Rows.Count, 20).End(xlUp).Row
        LRF2 = .Cells(.Rows.Count, 23).End(xlUp).Row
        TotHT = .Range("E2").Value
        TotTTC = .Range("E4").Value
     
            .Range("T" & LRF1).Offset(2, 0) = "Somme :"
            .Range("W" & LRF2).Offset(2, 0) = "Somme :"
            .Range("T" & LRF1).Offset(3, 0) = "Contrôle :"
            .Range("W" & LRF2).Offset(3, 0) = "Contrôle :"
     
                With .Range("U" & LRF1).Offset(2, 0)
                    .Formula = "=+SUM(R[-" & LRF1 & "]C:R[-2]C)"
                    .Value = .Value
                End With
     
                With .Range("X" & LRF2).Offset(2, 0)
                    .Formula = "=+SUM(R[-" & LRF2 & "]C:R[-2]C)"
                    .Value = .Value
                End With
     
                With .Range("U" & LRF1).Offset(3, 0)
                    .Formula = "=IF(R[-1]C-" & TotHT & "=0, ""OK"",""Erreur"")"
    Stop
    Dans ma cellule U11, Excel m'indique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(U10-676=0; "OK";"Erreur")
    Or ma cellule U10 (et également la valeur de la cellule E2) est de 676,23, et non 676. Comment puis-je affecté les décimales à ma variable TotHT ?

    Merci d'avance, bonne journée à toutes et tous.

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour.

    Définir ta variable TotHT en Long veut dire que tu ne veux pas de décimale ‼


  8. #8
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour Marc-L,

    Si je définis la variable comme Long, la valeur prise occulte les décimales et ma formule me ressort "Erreur" (normal). Si je définis ma variable comme Double, la valeur qu'elle prend est la bonne, seulement la macro plante (la fameuse erreur 1004 quant aux objets). Peut-être n'y a t-il aucune parade à ce problème et qu'il va falloir que je me passe de ce contrôle.

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    A mon avis le problème est mal exposé ou manque de précision …

    A copier dans le module de la procédure Compile_Data_Sheet_Facture :
    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
    Sub Demo()
        Const LF = vbLf & vbLf
        Dim TH As Double
     
        With Worksheets("Facture").[E2]
            If IsNumeric(.Value) Then
                VA = .Value
                D# = .Value
                TH = .Value
                MsgBox "VA = " & VA & LF & "D# = " & D# & LF & "TH = " & TH
     
            Else
                MsgBox "E2 n'est pas numérique !"
            End If
        End With
    End Sub
    Puis exécuter cette procédure Demo et nous informer du résultat …



    ______________________________________________
    Jeanne d'Arc s'est éteinte le 30 mai 1431, environ deux heures après sa mort …

  10. #10
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Re Marc-L,

    Merci pour ton programme de test.
    Le résultat de la boîte message indique pour les 3 variables VA, D# et TH la valeur 676,27.

  11. #11
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Re,
    En déclarant la variable en Single:
    si je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With .Range("U" & LRF1).Offset(3, 0)
                    .FormulaLocal = "=SI(R[-1]C-" & TotHT & "=0;""OK"";""Erreur"")"
    End With
    j'ai le message d'erreur 1004 etc....

    Maintenant si je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With .Range("U" & LRF1).Offset(3, 0)
                    .FormulaLocal = "=SI(" & .Offset(-1, 0).Address & "-" & TotHT & "=0;""OK"";""Erreur"")"
    End With
    chez moi ça fonctionne

  12. #12
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour rvtoulon,

    Malgré ta formule et la déclaration de variable en Single, j'ai la même erreur 1004.

  13. #13
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Mettre en commentaire les lignes de déclaration de variable (n°3 & 4) puis tester pour voir …

    Si toujours erreur 1004 alors c'est une erreur de conception.
    Faut voir alors sur quel n° de ligne et quelles sont les valeurs des variables associées pour comprendre la source de l'erreur …

    Au fait dans la formule, pourquoi mettre la valeur en dur (TotHT) au lieu de directement l'adresse de la cellule ($E$2) ?


    ______________________________________
    Pour s'endormir, un mouton ne peut compter que sur lui-même …

  14. #14
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut probleme de definition variable
    bonsoir,

    je connais peu de chose à VBA mais pour ma gouverne je souhaiterai comprendre la formulation ( "= if ..........).

    la formulation sur feuille Excel propose la formule VBA suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C-"" & TotHT & ""=0, """"OK"""",""""Erreur"""")"""
    - formula ou formulaR1C1 est-il indifférent ?
    - Le nombre de " en plus grands nombre est-il également indifférent ?

    Par ailleurs,
    - Je saisi assez mal comment on peut introduire une valeur décimale (TotHT ) comme numéro de colonne qui par définition ne peut qu'être entier (integer ou long.).
    - Si cela ne marche pas avec long: C'est peut être que la valeur TotHT dépasse le nombre de colonne d'Excel.

    Merci de m'éclairer.

    cordialement.

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour nibledispo
    c'est exactement ce que je lui ai repondu 8 reponses en arriere au moins il n'en a pas tenu compte


    a la place de toth c'est bien le chiffre d'une colonne qui doit etre
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut probleme de definition variable
    bonjour Patrick,

    C'est bien ce qu'il m'avait semblé comprendre de ton intervention en parcourant la discussion.
    Une valeur décimale comme offset de même qu'un offset entier supérieur au nombre de ligne ou colonne de la version Excel doit je pense fatalement engendrer une erreur.

    Peux tu m'indiquer un document qui explique clairement la formulation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormulaR1C1 = "=IF(R[-1]C-"" & TotHT & ""=0, """"OK"""",""""Erreur"""")"""
    .
    j'ai bien compris que c’était la transcription en VBA d'une formule entrée dans une cellule de la feuille Excel mais je saisi mal la syntaxe et tout particulièrement l'introduction en grande quantité des ( & )et des ( " ) .

    Il y a bien sur ce forum une discussion récente sur la fonction " si " mais les deux réponses apportées ne m'aident guère à comprendre.

    De plus, je n'ai pas réussi à trouver une explication sur le tutoriel.
    Merci.

    cordialement.

  17. #17
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    bonjour
    Patrick, nible,

    avec l'enregistreur de Macro, je met cette formule en A2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A1-676,23=0;"OK";"Erreur")
    voici le code de l'enregistreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C-676.23=0,""OK"",""Erreur"")"
    il me semble que votre remarque n'est pas bonne dans ce cas non? ici il me met erreur dans A2 car je n'ai pas de valeur en A1 donc la formule fonctionne

    or il veut remplacer 676,23 par une variable TotHt.

    la différence c'est que j'ai mis 676,23 et que le code met 676.23. se pourrait-il qu'il y est un souci entre le point et la virgule? je ne sais pas..

  18. #18
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    re,
    je viens de faire un test en mettant la variable ToTht string.

    A2 est ma cellule active, B1 contient 676,23 que je met dans ma variable ToTht et je remplace la virgule par un point voici le code avec la formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ToTht As String
    ToTht = Replace(Range("B1").Value, ",", ".")
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C-" & ToTht & "=0,""OK"",""Erreur"")"
    et ça fonctionne.
    si en A1 j'ai 676,23 la formule en A2 renvois OK
    si en A1 j'ai rien laformule en A2 renvois Erreur

  19. #19
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut probleme de definition variable
    Bonjour RVToulon,

    Comme je l'ai écrit, je ne maitrise pas la syntaxe de la transcription des formules Excel dans VBA.

    Ta réponse me permet, je crois, de comprendre mieux mon erreur sur la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(R[-1]C-" & ToTht & "=0 .......
    Il faut lire et comprendre ' soustraire totHT à R[-1]C ' là ou je comprenais ' R[-1]C[-totHT] ' , d'où mon étonnement de voir un offset décimale évoqué dans ma précédente intervention.

    Même question qu'à Patrick: peux-tu m'indiquer un endroit sur le Net qui explique la syntaxe des formules Excel transcrites en VBA. Sur aucun des trois livres en ma possession, je ne trouve d'explication.

    Mon intrusion dans cette discussion n'aura rien apporté à Runsh63 mais elle m'aura en revanche permis de progresser.

    Cordialement.

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    non de dieu !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(R[-1]C-" & ToTht & "=0 .......
    traduction:
    si la cellule 1 ligne en arriere lavaleur de totht en colonne en moins=0.....
    tu conprend bien que ca n'est pas bon

    moi je verrai plutot
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(Rc[-1]- ToTht & "=0 .......
    quand on utilise le meme nombre de ligne et colonne pour le decalge on utilise "RC[-X]"

    quand on utilise un decalage different pour les lignes et pour les colonnes
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(R[-1]C[-3]=0 .......
    traduction en vba pur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if   lenom_de_cellule_ou_se_trouve_la_formule.offset(-1,-3)=0...
    conclusion
    soit tu utilise une variable dans ta formule en tant que tel
    soit tu utilise l'offset"[-X]

    est ce que ca repond mieux a ta question ??
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [XL 2010] Problème de définition des variables
    Par tytyxam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/10/2011, 11h18
  2. Réponses: 2
    Dernier message: 24/10/2007, 17h00
  3. Réponses: 2
    Dernier message: 05/07/2007, 14h24
  4. [Système] Problème de définition des variables
    Par SLAM JACK dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 19h53
  5. Réponses: 1
    Dernier message: 21/12/2005, 19h08

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