Retour d'une valeur et non de la formule via VBA

man95

XLDnaute Occasionnel
Bonjour à vous tous,

une nouvelle fois je fais appel à vos compétences et votre disponibilité.

J'ai une macro qui me rapatrie des données en colonne dans ma feuil2 j'ai ensuite toujours par macro écrit une formule qui calcule un pourcentage ex: F2 = (D2/C2) cela sur x lignes

mon besoin est que je préfère avoir la valeur au lieu de la formule

Je vous joint un petit morceau de code pour exemple et vous remercie de vos solutions et de vos réponses.

Man


Code:
Sub test()

Dim MaFeuille1 As Worksheet, MaFeuille2 As Worksheet, MaFeuille3 As Worksheet
Dim Compteur As Long, Compteur1 As Long, Compteur2 As Long, Position As Long


Set MaFeuille1 = ThisWorkbook.Sheets("Feuil1")
Set MaFeuille2 = ThisWorkbook.Sheets("Feuil2")
Set MaFeuille3 = ThisWorkbook.Sheets("Feuil3")


    For Position = 2 To MaFeuille2.Range("A65536").End(xlUp).Row
              
        
    MaFeuille2.Range("F" & Position) = "=IF(ISERROR(R" & Position & "C[-2]/R" & Position & "C[-3]),""-"",(R" & Position & "C[-2]/R" & Position & "C[-3]))"
    
    
    Next Position

End Sub
 

DoubleZero

XLDnaute Barbatruc
Re : Retour d'une valeur et non de la formule via VBA

Bonjour, man95, le Forum,

Peut-être en ajoutant ces trois lignes à la procédure :

Code:
With Sheets("Feuil2").Cells.SpecialCells(xlCellTypeFormulas, 23)
    .Value = .Value
End With

A bientôt :)
 

ROGER2327

XLDnaute Barbatruc
Re : Retour d'une valeur et non de la formule via VBA

Bonsoir à tous.


Un essai (testé) :​

VB:
Sub test()

Dim MaFeuille2 As Worksheet
Dim Position As Long

    Set MaFeuille2 = ThisWorkbook.Sheets("Feuil2")

    With MaFeuille2
        For Position = 2 To .Range("A65536").End(xlUp).Row
            If IsNumeric(.Cells(Position, 3).Value) And IsNumeric(.Cells(Position, 4).Value) Then
                If .Cells(Position, 3).Value Then
                    .Cells(Position, 6).Value = .Cells(Position, 4).Value / .Cells(Position, 3).Value
                Else
                    .Cells(Position, 6).Value = "-"
                End If
            End If
        Next Position
    End With

End Sub



ROGER2327
#6549


Vendredi 6 Clinamen 140 (Saint Ganymède, professionnel - fête Suprême Quarte)
8 Germinal An CCXXI, 7,6597h - jonquille
2013-W13-4T18:23:00Z
 

Si...

XLDnaute Barbatruc
Re : Retour d'une valeur et non de la formule via VBA

salut

même idée que Roger2327 mais avec une boucle Each
Code:
Sub test()
  Dim R As Range
  For Each R In Feuil2.Range("C2:C" & Feuil2.Cells(Rows.Count, "C").End(xlUp).Row)
    If IsNumeric(R) And R <> 0 And IsNumeric(R(1, 2)) Then
      R(1, 4) = R(1, 2) / R
    Else
      R(1, 4) = "-"
    End If
  Next
 End Sub
 

man95

XLDnaute Occasionnel
Re : Retour d'une valeur et non de la formule via VBA

Bonjour DoubleZero, Roger2327, Si..., le forum

Tout d'abord, je suis désolé pour ma réponse si tardive ...

J'ai testé les 3 solutions qui fonctionnent parfaitement


Merci beaucoup

Man
 

Discussions similaires

Réponses
5
Affichages
198
Réponses
7
Affichages
377

Statistiques des forums

Discussions
312 345
Messages
2 087 490
Membres
103 558
dernier inscrit
Lamine ABIDI