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:
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.
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:
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.
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:
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.
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:
=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.