Microsoft 365 VBA mettre une formule dans des cellules

BOILEAU

XLDnaute Junior
Bonjour,

J'essaye d'écrire une formule VBA que je déclencherai avec un bouton. Malheureusement sans succès.
Voici le principe :
1er bloc de lignes
Si la cellule S11 contient une valeur numérique, alors la cellule Z12 est égale à S11-T11
2ème bloc de lignes
Si la cellule S13 contient une valeur numérique, alors la cellule Z14 est égale à S13-T13
Et ainsi de suite...
je peux avoir 50 blocs de lignes, soit 100 lignes
Pour info, une fois que la macro VBA est exécutée avec le bouton, je supprimerais manuellement la colonne S. Il faut donc que la valeur calculée dans les cellules Z12 et Z14 restent. Idem pour tous les lignes avec la cellule calculée.

J'espère que vous pourrez m'aider.

Un grand merci d'avance.

Cordialement,

Frédéric
 
Solution
Re,
Il suffit de faire la soustraction Z=S-T:
VB:
Sub Essai()
    Dim i%, F
    Set F = Sheets("IMPORT RECETTE PROFORMA")    ' A adapter
    For i = 1 To 50 Step 2
        If IsNumeric(F.Range("S" & 10 + i).Value) Then
            F.Range("Z" & 11 + i) = Range("S" & 10 + i).Value - Range("T" & 10 + i).Value
        End If
    Next i
    Columns("S:S").Delete Shift:=xlToLeft ' Suppression colonne S
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Boileau, Vgendron,
Perso, je ne ferai pas de fichier exemple à ta place
Peut être que Boileau pense que si ! :(
Alors ex nihilo essayez :
VB:
Sub Essai()
    Dim i%, F
    Set F = Sheets("Feuil1")    ' A adapter
    For i = 1 To 50 Step 2
        If IsNumeric(F.Range("S" & 10 + i).Value) Then
            F.Range("Z" & 11 + i) = Range("S" & 10 + i).Value
        End If
    Next i
    Columns("S:S").Delete Shift:=xlToLeft ' Suppression colonne S
End Sub
Evidemment je recopie que cellule S11 dans Z12, car je ne sais pas ce que veut dire :
la cellule Z12 est égale à S11-T11
Comment, par quel miracle, une cellule peut en contenir deux ?
Et sans fichier test ...... :)
 

BOILEAU

XLDnaute Junior
Bonjour Boileau, Vgendron,

Peut être que Boileau pense que si ! :(
Alors ex nihilo essayez :
VB:
Sub Essai()
    Dim i%, F
    Set F = Sheets("Feuil1")    ' A adapter
    For i = 1 To 50 Step 2
        If IsNumeric(F.Range("S" & 10 + i).Value) Then
            F.Range("Z" & 11 + i) = Range("S" & 10 + i).Value
        End If
    Next i
    Columns("S:S").Delete Shift:=xlToLeft ' Suppression colonne S
End Sub
Evidemment je recopie que cellule S11 dans Z12, car je ne sais pas ce que veut dire :

Comment, par quel miracle, une cellule peut en contenir deux ?
Et sans fichier test ...... :)
Bonjour,

Merci pour vos retours.
Pour plus de réalisme, je vous joint mon fichier excel.
J'espère que cela vous aidera.

Merci

Frédéric
 

Pièces jointes

  • DOSSIER EXEMPLE.xlsm
    17.2 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Il suffit de faire la soustraction Z=S-T:
VB:
Sub Essai()
    Dim i%, F
    Set F = Sheets("IMPORT RECETTE PROFORMA")    ' A adapter
    For i = 1 To 50 Step 2
        If IsNumeric(F.Range("S" & 10 + i).Value) Then
            F.Range("Z" & 11 + i) = Range("S" & 10 + i).Value - Range("T" & 10 + i).Value
        End If
    Next i
    Columns("S:S").Delete Shift:=xlToLeft ' Suppression colonne S
End Sub
 

BOILEAU

XLDnaute Junior
Re,
Il suffit de faire la soustraction Z=S-T:
VB:
Sub Essai()
    Dim i%, F
    Set F = Sheets("IMPORT RECETTE PROFORMA")    ' A adapter
    For i = 1 To 50 Step 2
        If IsNumeric(F.Range("S" & 10 + i).Value) Then
            F.Range("Z" & 11 + i) = Range("S" & 10 + i).Value - Range("T" & 10 + i).Value
        End If
    Next i
    Columns("S:S").Delete Shift:=xlToLeft ' Suppression colonne S
End Sub
Un grand merci.
A une prochaine certainement.

Bonne journée.

Frédéric
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16