Synthaxe d'ecriture

bonjour

une toute petite question ; en ayant préalablement defini u et plage comme des variable de type range , lorsque j'ecris :

For Each u In Range("a8:a38")

 Set plage = Range(u.Offset(0, 1), u.Offset(0, 2))

' traitement .....

next

end sub

cette formulation de d"part est elle compréhensible par vba ? car pour mon code j'ai des resultats un peu aberrants ?

Merci

je joint mon fichier si cela peut etre utile , en vous remerciant du temps que vous pourriez y accorder

13sommes.zip (8.94 Ko)

Bonjour,

N'oublierais-tu pas de remettre tes variables "compd" et "compg" à 0 à chaque boucle?

Comme :

u.Offset(0, 3).Value = compd & " \ " & compg
compd=0:compg=0
Next u

Bon courage

Bonjour,

sans savoir ce qui n'est pas correct je propose :

Option Explicit
Sub Consolid()
Dim c, u As Range
Dim plage As Range
Dim pos As Long
Dim val1 As Long
Dim val2 As Long
Dim compd As Long
Dim compg As Long

'sommes horizontales :
For Each u In Range("a8:a38")

 Set plage = Range(u.Offset(0, 1), u.Offset(0, 2))
 compd = 0
 compg = 0
      For Each c In plage
          If Not c Like ("" & "\" & "") Then
            If c <> "" Then
                 pos = InStr(1, c.Value, "\", vbTextCompare)
                 val1 = CLng(Trim(Left(c.Value, pos - 1)))
                 compd = compd + val1
                 val2 = CLng(Trim(Right(c.Value, Len(c.Value) - pos - 1)))
                 compg = compg + val2
            End If
          End If

      Next c
                u.Offset(0, 3).Value = compd & " \ " & compg

Next u
End Sub

Re-,

Nota, le fait d'écrire ainsi :

Dim c, u As Range

déclare bien u As Range, mais déclare c comme Variant...

La bonne syntaxe :

Dim c As Range, u As Range

Bonne journée

en tout cas un grand merci pour toute vos réponses ! je n'aurais pas pensé à initialiser compd=0:compg=0

Rechercher des sujets similaires à "synthaxe ecriture"