XL 2019 Restitution cellule

risch_cyril

XLDnaute Nouveau
Bonjour,
mon code devrait restituer une valeur numérique, mais il me restitue du texte. Comment cela se fait t-il ?
VB:
Sub Calcul()
Dim chemin$, fichier$, a(), n&
chemin = ThisWorkbook.Path & "\"
fichier = Dir(chemin & "gestion*.xlsx")
ReDim a(1 To Rows.Count, 1 To 2)
While fichier <> ""
    n = n + 1
    a(n, 1) = fichier
    a(n, 2) = "=SUM('" & chemin & "[" & fichier & "]" & "Janvier:Décembre'!C168)" 'formule de liaison
    fichier = Dir
Wend
'---restitution---
With Feuil1 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[E2] '1ère cellule de destination, à adapter
        If n Then .Resize(n, 2) = a
        If n Then
            .Offset(n + 1) = "Total"
            .Offset(n + 1, 1) = "=SUM(R[" & -n - 1 & "]C:R[-2]C)"
        End If
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Il manque .FormulaR1C1 derrière .Offset(n + 1, 1)
Sinon il assume .Value, qui peut éventuellement marcher quand même si c'est une formule en notation A1, mais pas R1C1. La ligne absolue serait plus simple, non ?
VB:
.Offset(n + 1, 1).FormulaR1C1 = "=SUM(R2C:R[-2]C)"
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour rish_cyril, Bernard,

Il s'agit (à peu près) du code que je vous ai donné, il manque cependant une ligne pour l'effacement.

Donc comme je l'ai déjà dit vous modifiez mes codes et fichiers, alors débrouillez-vous.
Il manque .FormulaR1C1 derrière .Offset(n + 1, 1)
Non, ce n'est pas nécessaire, comme il y a des crochets dans la formule VBA sait qu'elle est du type R1C1.

A+
 

Valtrase

XLDnaute Occasionnel
Attention au format des cellules....
test avec formule = AUJOURDHUI()
1624448442275.png
 

risch_cyril

XLDnaute Nouveau
Bonjour rish_cyril, Bernard,

Il s'agit (à peu près) du code que je vous ai donné, il manque cependant une ligne pour l'effacement.

Donc comme je l'ai déjà dit vous modifiez mes codes et fichiers, alors débrouillez-vous.

Non, ce n'est pas nécessaire, comme il y a des crochets dans la formule VBA sait qu'elle est du type R1C1.

A+
La ligne qu'il manque pause probléme lors de l'éxecution de la macro ça me la met en jaune donc sur un autre ticket quelqu'un ma dit qu'elle nétait pas nécessaire j'ai actuellemtn se code ci dessou mais le résultat dans la case est toujours affiché comme "gestion_2021" et non pas la somme (résultat en E2 de la feuille tableau)

VB:
Sub Calcul()
Dim chemin$, fichier$, a(), n&
chemin = ThisWorkbook.Path & "\"
fichier = Dir(chemin & "gestion*.xlsx")
ReDim a(1 To Rows.Count, 1 To 2)
While fichier <> ""
    n = n + 1
    a(n, 1) = fichier
    a(n, 2) = "=SUM('" & chemin & "[" & fichier & "]" & "Janvier:Décembre'!C168)" 'formule de liaison
    fichier = Dir
Wend
'---restitution---
With Feuil1 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[E2] '1ère cellule de destination, à adapter
        If n Then .Resize(n, 2) = a
        .Offset(n + 1, 1).FormulaR1C1 = "=SUM(R2C:R[-2]C)"
        If n Then
            .Offset(n + 1) = "Total"
            .Offset(n + 1, 1) = "=SUM(R[" & -n - 1 & "]C:R[-2]C)"
        End If
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 157
Membres
112 672
dernier inscrit
djudju