Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Valeur par défaut de cellules (VBA)

AHMOST

XLDnaute Junior
Bonjour,

J'ai un souci de code VBA pour tout simplement afficher une valeur par défaut dans certaines cellules tant que l'utilisateur ne clique pas sur la cellule.

Voici mon code :
Sub FillValues()

Dim InternalMarge As Range
Dim ExternalMarge As Range
Dim SFC As Range

InternalMarge = "D20"
If InternalMarge = "" Then
InternalMarge = "30"
End If

ExternalMarge = "D21"
If ExternalMarge = "" Then
ExternalMarge = "10"
End If

SFC = "D24"
If SFC = "" Then
SFC = "15"
End If


End Sub

Merci

PS : comment faire pour avoir la partie "Excel" du message que l'on poste que je vois chez certains posteurs ?
 

Paf

XLDnaute Barbatruc
Re : Valeur par défaut de cellules (VBA)

Bonjour

pas sûr d'avoir tout compris !

S'il s'agit d'attribuer une valeur à une cellule( D20 par ex.) si elle est vide:

Code:
If Range("D20")= "" Then
  Range("D20")= 30
End If


A+
 

AHMOST

XLDnaute Junior
Re : Valeur par défaut de cellules (VBA)

Merci pour ta réponse Paf. Oui c'est exactement ça, si la cellule est vide, je veux qu'il y ait les valeurs par défauts (30, 10 et 15) qui s'affichent, et qu'on puisse les modifier simplement en selectionnant la cellule et en entrant la valeur désirée.
Si je déclare mes variables (non obligatoire mais préférable pour la relecture du code plus tard), ça donne quelquechose comme ça :

Sub FillValues()
Dim InternalMarge As String
Dim ExternalMarge As String
Dim SFC As String

InternalMarge = "D20"
If InternalMarge = "" Then
InternalMarge = 30
End If

ExternalMarge = "D21"
If ExternalMarge = "" Then
ExternalMarge = 10
End If

SFC = "D24"
If SFC = "" Then
SFC = 15
End If


End Sub

Qu'en penses tu ? est-ce qu'il faut affecter cette macro qqpart ou est-ce qu'elle est censé fonctionner sans affectation ? J'avoue commencer les macros
 

VDAVID

XLDnaute Impliqué
Re : Valeur par défaut de cellules (VBA)

Salut AHMOST, Paf,

Peut-être serait-il judicieux ici de mettre un fichier exemple avec le résultat souhaité pour nous éclairer ?
Peut-être que chez Paf ça l'a fait (Paf justement) mais moi je suis plus dans le plouf pour comprendre ce que tu veux faire
 

AHMOST

XLDnaute Junior
Re : Valeur par défaut de cellules (VBA)

Voici un fichier test pour ce que je souhaite réaliser.
Tout simplement pour les cellules B2, B3 et B4, afficher une valeur par défaut (30 pour B2, 10 pour B3 et 15 pour B4). Cette valeur par défaut sera modifier par l'utilisateur s'il le désir en selectionnant la cellule (la valeur par défaut disparait) et il n'a plus qu'a taper la valeur souhaitée.

Merci pour votre aide en tous cas
 

Pièces jointes

  • Classeur1-Test-valeurs par défaut.xlsm
    12 KB · Affichages: 41
G

Guest

Guest
Re : Valeur par défaut de cellules (VBA)

Bonjour,

En lieu et place de ta macro FillValues, dans le module de code de la feuille:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    'Si la cellule modifiée lors de l'appel de l'évènement Change
    'est comprise dans la plage B2:B4 alors vérifier les valeurs par défaut
    If Not Intersect(Target, Range("B2:B4")) Is Nothing Then
    
        'Eviter le rappel de l'évènement si les lignes suivante change le contenu des cellules
        Application.EnableEvents = False
        
        'Contrôler le contenu des cellules et mettre les valeurs par défaut si besoin
        If Range("B2") = "" Then Range("B2") = 30    'Internal marge
        If Range("B3") = "" Then Range("B3") = 10    'External marge
        If Range("B4") = "" Then Range("B4") = 15    'SFC
        
        'Rétablir la gestion normale des évènements
        Application.EnableEvents = True
    End If
End Sub

A+
 
Dernière modification par un modérateur:

AHMOST

XLDnaute Junior
Re : Valeur par défaut de cellules (VBA)

Merci pour ta réponse VDAVID, en revanche cela ne fonctionne pas sur le fichier que tu as joins : rien ne s'affiche si je n'entre rien dans la cellule ?
Hasco ta méthode ne m'affiche rien non plus.

Etant un vrai débutant en macro, je me demande s'il faut affecter cette macro qqpart ou si elle est active dès que l'on rentre le code dans le module de la feuille concernée ?

Merci !
 
Dernière édition:

VDAVID

XLDnaute Impliqué
Re : Valeur par défaut de cellules (VBA)

Effectivement j'ai mis les valeurs par défaut qu'a l'activation de la feuille, mais si elle est déjà activée, elles ne s'afficheront pas ...
J'ai mis l'évènement à l'ouverture du classeur dans la nouvelle PJ
 

Pièces jointes

  • AHMOST(1).xlsm
    15.5 KB · Affichages: 41

AHMOST

XLDnaute Junior
Re : Valeur par défaut de cellules (VBA)

Merci ! effectivement ça fonctionne à l'ouverture maintenant
Deux points :
-je ne comprends pas ce que tu as changé entre la 1ère PJ et la seconde ?
-Si je selectionne la cellule, je peux rentrer la valeur, en revanche si je l'efface, la valeur par défaut ne se remet pas en place. As tu une idée de ce qu'il faut rajouter au code ?
 
G

Guest

Guest
Re : Valeur par défaut de cellules (VBA)

Re,

Voici le fichier correspondant à mon précédent post, supprime une valeur de B2:B4 et tu verras.

A+
 
Dernière modification par un modérateur:

AHMOST

XLDnaute Junior
Re : Valeur par défaut de cellules (VBA)

ça marche nickel ! J'ai remplacé les noms de cellule dans le code et l'ai copié dans mon fichier de base : ça ne fonctionne pas.
Peut etre est-ce dû à l'objet "intersect", en effet mes cellules ne sont pas à coté dans le fichier de base.
D20, D21 et D24 sont les cellules à traiter avec le code. Qu'en pensez tu ?

Merci pour votre aide !
 
G

Guest

Guest
Re : Valeur par défaut de cellules (VBA)

Re,

Je ne serai pas contre le fait que tu proposes tes propres solutions au problème, pour voir comment tu comprends et avance dans ton apprentissage.

Solution:
Code:
If Not Intersect(Target, Range("D20:D21,D24")) Is Nothing Then ......

P.S. Intersect n'est pas un objet mais une méthode qui retourne un objet(range) ou rien (nothing).
F1:méthode magique!
A+
 
Dernière modification par un modérateur:

AHMOST

XLDnaute Junior
Re : Valeur par défaut de cellules (VBA)

Re,

Hasco je peux t'assurer que je suis là pour apprendre, et j'espère un jour en apprendre à un autre membre du forum, pour dire vrai je souhaite avoir un code qui fonctionne pour ensuite comprendre pourquoi et comment.
Je vais d'ailleurs te poser quelques questions "de base":
-A quoi sert la partie "ByVal Target As Range" ? Je ne comprends pas vraiment l'utilité du ByVal, meme après avoir lu des articles sur le net. Pourquoi ne pas tout simplement déclarer les variables ?
-Que fournit l'élément Target au code ?
-A quoi sert la ligne "If Not Intersect(Target, Range()) Is nothing Then" ?
-A quoi sert la partie "Application.EnableEvents =True/false" ? Pourquoi la mettre en False puis en True ?

J'avais bien modifier les références de cellules comme tu l'as fait dans ta solution mais la macro ne fonctionne pas sur mon fichier final ...

Merci Hasco !
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…