VBA si valeur vide ALORS

AHMOST

XLDnaute Junior
Bonjour le forum !

Je cherche actuellement à créer un code VBA très simple qui permet d'entrer une valeur dans une cellule B2 si cette cellule est vide. Si l'utilisateur entre une valeur alors la macro ne s'active pas.
Exemple que je cherche à faire :
2 calculs à effectuer, calcul1 et calcul2.
Si calcul1 est vide alors calcul1 vaut 1000.
Si calcul2 est vide alors calcul2 vaut 2000.

Voici le code que j'ai fait et qui ne fonctionne pas :
Code:
Sub Worksheet_change(ByVal Target As Range)
Dim calcul1 As Single
Dim Calcul2 As Single
calcul1 = Range("B2")
Calcul2 = Range("B4")

    If calcul1 = "" Then
    calcul1 = 1000
    End If
    If Calcul2 = "" Then
    Calcul2 = 2000
    End If
    
End Sub

Je vous joint le fichier Excel exemple

J'attends de vos nouvelles bienveillantes ... :)
Bonne journée !
 

Pièces jointes

  • Test-VBA-valeur vide.xlsm
    13.5 KB · Affichages: 41
  • Test-VBA-valeur vide.xlsm
    13.5 KB · Affichages: 51
  • Test-VBA-valeur vide.xlsm
    13.5 KB · Affichages: 55

DoubleZero

XLDnaute Barbatruc
Re : VBA si valeur vide ALORS

Bonjour, AHMOST :), Pierrot :D, le Forum,

L’emploi, en début de procédure de :

Code:
Application.EnableEvents = False

puis, en fin de procédure de :

Code:
Application.EnableEvents = True

permet de suspendre la procédure durant les modifications.

Il évite toute boucle inutile et nous dispense, par exemple, du désagréable avertissement "Erreur d’éxécution… Espace pile insuffisant".

Pour s’en convaincre, ne garder que ce fichier ouvert, mettre ces deux lignes de code en commentaire et modifier la valeur des cellules...

A bientôt :)
 

AHMOST

XLDnaute Junior
Re : VBA si valeur vide ALORS

DoubleZéro effectivement j'ai testé et j'ai compris le principe du EnableEvents...
Je reviens avec le meme fichier mais exactement ce que je cherche à faire sur mon fichier complet car je n'arrive pas à modifier le code pour l'adapter ...

Code:
Option Explicit
Sub Worksheet_change(ByVal Target As Range)
    Dim Cout As Range, Neuf_Ancien As Range, Frais As Range, Taux As Range
    Application.EnableEvents = False
    
    Set Cout = Range("B1")
    Set Neuf_Ancien = Range("B2")
    Set Frais = Range("B3")
    
    If Neuf_Ancien = Neuf Then
    Set Taux = Range("O1")
    Else
    Set Taux = Range("O2")
    End If
    
    If Cout <> "" And Neuf_Ancien <> "" Then
        Frais = 1000 + Taux * Cout
    Else
        Frais = ""
    End If
    
    Application.EnableEvents = True
    
End Sub

B1 = cout
B2 = choix entre Neuf et Ancien permettant de choisir le taux adapté
B3 = valeur frais

B5 = TOTAL = cout + frais

Le code ne fonctionne pas :/

Merci pour l'aide !
Bonne journée
 

Pièces jointes

  • 00 - AHMOST - Si cellule vide....xlsm
    14.2 KB · Affichages: 49
  • 00 - AHMOST - Si cellule vide....xlsm
    14.2 KB · Affichages: 50
  • 00 - AHMOST - Si cellule vide....xlsm
    14.2 KB · Affichages: 45

DoubleZero

XLDnaute Barbatruc
Re : VBA si valeur vide ALORS

Bonjour à toutes et à tous,

@ AHMOST,

Merci de bien vouloir déposer le véritable fichier de travail, dépourvu de donnée confidentielle, avec une explication claire du besoin, car, pour l'heure, j'ai le sentiment de tourner en rond :rolleyes: au gré des vents...

A bientôt :)
 

AHMOST

XLDnaute Junior
Re : VBA si valeur vide ALORS

Bonjour DoubleZéro,

Voici le fichier complet que je développe actuellement. Je m'exerce à développer un outil Excel qui m'interesse !
La question est exactement la meme qu'au dessus mais peut être pourras tu m'aider :)

Le but est que si l'utilisateur ne rentre pas la valeur dans certaines cellules, celle-ci se calcule automatiquement par code VBA.
Mon exemple se fait tout d'abord sur la partie du calcul des frais de notaires, mais le meme type de code me sera nécessaire pour le calcul de la taxe foncière !

Bonne journée :rolleyes:
 

Pièces jointes

  • Exercice Outil Excel.xlsm
    38.2 KB · Affichages: 46

DoubleZero

XLDnaute Barbatruc
Re : VBA si valeur vide ALORS

Bonjour à toutes et à tous,

...Le but est que si l'utilisateur ne rentre pas la valeur dans certaines cellules, celle-ci se calcule automatiquement par code VBA.
Mon exemple se fait tout d'abord sur la partie du calcul des frais de notaires...

Une nouvelle version en pièce jointe.

A bientôt :)
 

Pièces jointes

  • 00 - AHMOST - Si cellule vide...V2.xlsm
    55.3 KB · Affichages: 68

Discussions similaires

Réponses
7
Affichages
233