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

  • Initiateur de la discussion Initiateur de la discussion man95
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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 🙂
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour