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

RESOLU : Macro forcer "X" ou date quand saisie dans une cellule

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 !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Mes meilleurs voeux pour cette nouvelle année, santé, réussite, beaucoup de joie et de bonheur 🙂

Nouvelle énigme VBA que je n'arrive pas à saisir malgré mes élucubrations et mes recherches 🙂

Mon souci est le suivant (classeur test joint)

dans la colonne Z, j'ai voulu obliger une saisie numérique et j'ai pour cela trouvé un code sur le net que j'ai pu facilement adapter :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("Z6:Z1006"), Target) Is Nothing And Target.Count = 1 Then
    If Not IsNumeric(Target) Then
      MsgBox "SVP Nbr ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
  End If
End Sub

Pour les autres colonnes que voudrais obliger les saisies suivantes :

BL = x
BM/BN = x ou une date
BO/BP = x
BQ = x ou une date
BR à BX = x

Pourriez-vous m'aider ?

Amicalement,
Caliméro
 

Pièces jointes

Dernière édition:
Re : Macro forcer "X" ou date quand saisie dans une cellule

Bonjour Caliméro, le forum,

En définissant tes plages, voir avec la macro ci-dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
  If Not Intersect([Z], Target) Is Nothing Then
    If Not IsNumeric(Target) Then
      MsgBox "SVP Nbr ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
  ElseIf Not Intersect([BL_BX], Target) Is Nothing Then
    If Not (Target = "X" Or Target = "x") Then
      MsgBox "SVP X ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
  ElseIf Not Intersect([BM_BQ], Target) Is Nothing Then
    If Not (IsDate(Target) Or Target = "X") Then
      MsgBox "SVP X, x, date ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
  End If
End Sub

A te relire

Martial
 

Pièces jointes

RESOLU / Macro forcer "X" ou date quand saisie dans une cellule

Bonjour Martial,
Bonjour à toutes et à tous,
Un grand Merci, ça marche super.

Je l'ai adapté comme suit :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
  If Not Intersect([Z], Target) Is Nothing Then
    If Not IsNumeric(Target) Then
      MsgBox "SVP Nbr ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
  ElseIf Not Intersect([BL:BL], Target) Is Nothing Then
    If Not (Target = "x" Or Target = "x") Then
      MsgBox "SVP x ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
ElseIf Not Intersect([BO:BP], Target) Is Nothing Then
    If Not (Target = "x" Or Target = "x") Then
      MsgBox "SVP x ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
    ElseIf Not Intersect([BR:BX], Target) Is Nothing Then
    If Not (Target = "x" Or Target = "x") Then
      MsgBox "SVP x ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
  ElseIf Not Intersect([BM:BN], Target) Is Nothing Then
    If Not (IsDate(Target) Or Target = "x") Then
      MsgBox "SVP x, date ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
    ElseIf Not Intersect([BQ:BQ], Target) Is Nothing Then
    If Not (IsDate(Target) Or Target = "x") Then
      MsgBox "SVP x, date ou rien !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
  End If
End Sub

Super vous êtes des magiciens,
Bonne fin de journée 🙂
Amicalement,
Caliméro
 
Re : RESOLU : Macro forcer "X" ou date quand saisie dans une cellule

Re,

Ça ne fonctionnait pas tel que j'avais fait ? En regroupant les différentes plages en fonction du x, date ou numérique ?
 
Re : RESOLU : Macro forcer "X" ou date quand saisie dans une cellule

Re,
Si ça marchait pour la majorité des codes mais j'avais un petit soucis pour les cellules qui pouvaient contenir "x ou date"
Mais tout y était et c'est super,
Encore Merci 🙂
Amicalement,
Calimero,
 
Re : Presque RESOLU : Macro forcer "X" ou date quand saisie dans une cellule

Bonsoir Martial et à tous ceux qui ne dorment pas encore 🙂

Je viens de m'apercevoir qu'il me reste un soucis.

Tes macros fonctionnent super bien ..... même trop bien LOL
En effet, j'envoie ce classeur au fil de l'évolution des données et j'ai besoin, qu'après saisie on puisse selon besoin remettre à vide les cellules complétées précédemment.

Les macros refusent la mise à vide des cellules.

Peux-tu encore m'aider ?

Un grand Merci par avance 🙂
Je joins le classeur test,

Bonne nuit à toutes et à tous,
Amicalement,
Caliméro,
 

Pièces jointes

Dernière édition:
Re : RESOLU : Macro forcer "X" ou date quand saisie dans une cellule

Dans la macro, dans les premières lignes tu as
If Target.Count > 1 Then Exit Sub
ce qui signifie que si tu sélectionnes plusieurs cellules, la macro événementielle "Change" ne va pas se déclencher. Tu pourras donc supprimer les données rentrées dans ces cellules.
Sinon, tu peux créer une macro pour supprimer toutes les données de tes plages
VB:
Sub Supprimer()
[Z].ClearContents
[BL_BX].ClearContents
[BM_BQ].ClearContents
End Sub

A+
 
- 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

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