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

Autorisation de cocher si cellules remplies

  • Initiateur de la discussion Initiateur de la discussion degap05
  • 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 !

degap05

XLDnaute Impliqué
Bonjour le forum,

Je cherche à interdire le remplissage des cellules en colonne D, si les cellules de la ligne considérée en B et C sont vides:

If IsEmpty(Range("B4:B").Value) And IsEmpty(Range("C4:C").Value) Then
MsgBox "Veuillez renseigner les cellules de la ligne en colonne B et C"
Else
'mon code
End If

Il manque la notion de ligne.....

Merci de votre aide.
 
Re : Autorisation de cocher si cellules remplies

Bonjour degap05,

Il faut que la variable lig (n° de ligne) ait été définie, alors vous pourrez tester ainsi :

Code:
If Range("B" & lig) & Range("C" & lig) = "" Then
MsgBox "Veuillez renseigner les cellules de la ligne en colonne B et C"
Else
'mon code
End If

Mais peut-être voulez-vous plutôt :

Code:
If Range("B" & lig) = "" [COLOR="Red"]Or[/COLOR] Range("C" & lig) = "" Then
MsgBox "Veuillez renseigner les cellules de la ligne en colonne B et C"
Else
'mon code
End If

A+
 
Re : Autorisation de cocher si cellules remplies

Bonjour degap,

avec ceci:
Code:
Sub Macro1()
For i = 1 To 10
If IsEmpty(Range("B" & i).Value) And IsEmpty(Range("C" & i).Value) Then
MsgBox "Veuillez renseigner les cellules de la ligne " & i & " en colonne B et C"
Else
'mon code
End If
Next i
End Sub
pour effectuer le test sur les 10 premières lignes

Edit: Bonjour Job75
 
Re : Autorisation de cocher si cellules remplies


Bonjour le forum, phlaurent55,

J'ai réussi à incorporer ton code dans ma macro (issue du forum, merci).
Je ne voudrais tester que la ligne en cours.
Quelles modifications de code apporter ?

Merci.
A+
 
Re : Autorisation de cocher si cellules remplies

Bonjour Degap,

avec ceci:
Code:
Sub Macro1()
i = ActiveCell.Row
If IsEmpty(Range("B" & i).Value) And IsEmpty(Range("C" & i).Value) Then
MsgBox "Veuillez renseigner les cellules de la ligne " & i & " en colonne B et C"
Else
'mon code
End If
End Sub

bonne journée
à+
.
 
Re : Autorisation de cocher si cellules remplies


Bonjour, merci de ta réponse ultra-rapide,
Ta proposition fonctionne, mais lorsque je double-clique une cellule de la colonne D, comme cela est prévu pour copier la ligne sur une autre feuille, j'ai bien le message, mais la copie de la ligne se fait quand même.
Peut-on ajouter de quitter la procédure avant l'exécution de la macro.
Voici le code complet (quel fouillis!!!):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans une cellule
Dim dest As Range 'déclare la variable dest (DESTination)
Dim l As Integer 'déclare la variable l (Ligne)
Dim vr1 As String, vr2 As String, vr3 As String, vr4 As String, vr5 As String, vr6 As String 'déclare les variables vr1 et vr2 et vr3 (Valeur Recherchée 1 et Valeur Recherchée 2 et Valeur Recherchée 2)
Dim r As Range 'déclare la variable r (Recherche)
Dim test As Boolean, curSheet As Worksheet
Dim i As Integer

If Target.Column <> 4 Then Exit Sub 'si le double-clic ne se fait pas dans la colonne D, sort de la procédure

'doucle-clic sur un "x" = suppression de la ligne
If Target.Value = "x" Then 'condition : si le double-clic se fait sur une cellule contenant déjà "x"
Cancel = True 'annule le mode édition lié au double clic
Target.Value = "" 'supprime le "x" dans la cellule
vr1 = Cells(Target.row, 1).Value
vr2 = Cells(Target.row, 2).Value
vr3 = Cells(Target.row, 3).Value
vr4 = Cells(Target.row, 4).Value
vr5 = Cells(Target.row, 5).Value
vr6 = Cells(Target.row, 6).Value
With Sheets("Validé").Range("D2😀" & Sheets("Validé").Range("D65536").End(xlUp).row) 'prend en compte la plage éditée de la colonne A dans l'onglet "Cde"
Set r = .Find(vr1) 'définit la variable r
If Not r Is Nothing And r.Offset(0, 1).Value = vr2 Then r.EntireRow.Delete 'si il existe au moins une occurrence trouvée du nom et si le prénom correspond, supprime la ligne
End With 'fin de la prise en compte
Exit Sub 'sort de la procédure
End If 'fin de la condition
For Each curSheet In ThisWorkbook.Sheets
If curSheet.Name = "Validé" Then test = True
Sheets("Cde").Select
'si la feuille n'a pas encore été créée, la créer
If Not test Then ThisWorkbook.Sheets.Add.Name = "Validé"
Sheets("Validé").Range("A1").Value = "DEM01900"
Sheets("Cde").Select
Next
'doucle-clic sur une cellule vide ajout des données

Set dest = Sheets("Validé").Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
l = Target.row 'définit la variable l
Cancel = True 'annule le mode édition lié au double clic

i = ActiveCell.row
If IsEmpty(Range("B" & i).Value) And IsEmpty(Range("C" & i).Value) Then
Cancel = True
MsgBox "Veuillez renseigner les cellules de la ligne " & i & " en colonne B et C"
Else
Target.Value = "x" 'place "x" dans la cellule double-cliquée
End If

dest.Offset(0, 0).Value = "100" 'dans la colonne a
dest.Offset(0, 1).Value = "1000000" 'dans la colonne b
dest.Offset(0, 2).Value = "1900" 'dans la colonne c
dest.Offset(0, 3).Value = Cells(l, 1).Value 'copie le libellé en colonne d
dest.Offset(0, 4).Value = Cells(l, 2).Value 'copie le code en colonne e
dest.Offset(0, 5).Value = Cells(l, 3).Value * 100 'copie la qté x100 en colonne f
dest.Offset(0, 6).Value = Format(Now, "yyyymmdd") 'en colonne g
End Sub

Merci A+
 
Re : Autorisation de cocher si cellules remplies

Re,
Voici le code complet (quel fouillis!!!):
J'ai déjà vu plus bordélique que cela................ surtout dans mes codes 😡
L'important c'est de s'y retrouver 😀

Vois ci-dessous, le bout de code (en bleu)à ajouter
Voir plus bas dans le code, supprimer ce qui est en rouge
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans une cellule
Dim dest As Range 'déclare la variable dest (DESTination)
Dim l As Integer 'déclare la variable l (Ligne)
Dim vr1 As String, vr2 As String, vr3 As String, vr4 As String, vr5 As String, vr6 As String 'déclare les variables vr1 et vr2 et vr3 (Valeur Recherchée 1 et Valeur Recherchée 2 et Valeur Recherchée 2)
Dim r As Range 'déclare la variable r (Recherche)
Dim test As Boolean, curSheet As Worksheet
Dim i As Integer

If Target.Column <> 4 Then Exit Sub 'si le double-clic ne se fait pas dans la colonne D, sort de la procédure

[COLOR="Blue"]i = ActiveCell.row
If IsEmpty(Range("B" & i).Value) And IsEmpty(Range("C" & i).Value) Then
Cancel = True
MsgBox "Veuillez renseigner les cellules de la ligne " & i & " en colonne B et C"
Exit sub
Else
Target.Value = "x" 'place "x" dans la cellule double-cliquée
End If[/COLOR]

'doucle-clic sur un "x" = suppression de la ligne
If Target.Value = "x" Then 'condition : si le double-clic se fait sur une cellule contenant déjà "x"
Cancel = True 'annule le mode édition lié au double clic
Target.Value = "" 'supprime le "x" dans la cellule
vr1 = Cells(Target.row, 1).Value
vr2 = Cells(Target.row, 2).Value
vr3 = Cells(Target.row, 3).Value
vr4 = Cells(Target.row, 4).Value
vr5 = Cells(Target.row, 5).Value
vr6 = Cells(Target.row, 6).Value
With Sheets("Validé").Range("D2" & Sheets("Validé").Range("D65536").End(xlUp).row) 'prend en compte la plage éditée de la colonne A dans l'onglet "Cde"
Set r = .Find(vr1) 'définit la variable r
If Not r Is Nothing And r.Offset(0, 1).Value = vr2 Then r.EntireRow.Delete 'si il existe au moins une occurrence trouvée du nom et si le prénom correspond, supprime la ligne
End With 'fin de la prise en compte
Exit Sub 'sort de la procédure
End If 'fin de la condition
For Each curSheet In ThisWorkbook.Sheets
If curSheet.Name = "Validé" Then test = True
Sheets("Cde").Select
'si la feuille n'a pas encore été créée, la créer
If Not test Then ThisWorkbook.Sheets.Add.Name = "Validé"
Sheets("Validé").Range("A1").Value = "DEM01900"
Sheets("Cde").Select
Next
'doucle-clic sur une cellule vide ajout des données

Set dest = Sheets("Validé").Range("A65536").End(xlUp).Offset( 1, 0) 'définit la variable dest
l = Target.row 'définit la variable l
Cancel = True 'annule le mode édition lié au double clic

[COLOR="Red"]i = ActiveCell.row
If IsEmpty(Range("B" & i).Value) And IsEmpty(Range("C" & i).Value) Then
Cancel = True
MsgBox "Veuillez renseigner les cellules de la ligne " & i & " en colonne B et C"
Else
Target.Value = "x" 'place "x" dans la cellule double-cliquée
End If[/COLOR]

dest.Offset(0, 0).Value = "100" 'dans la colonne a
dest.Offset(0, 1).Value = "1000000" 'dans la colonne b
dest.Offset(0, 2).Value = "1900" 'dans la colonne c
dest.Offset(0, 3).Value = Cells(l, 1).Value 'copie le libellé en colonne d
dest.Offset(0, 4).Value = Cells(l, 2).Value 'copie le code en colonne e
dest.Offset(0, 5).Value = Cells(l, 3).Value * 100 'copie la qté x100 en colonne f
dest.Offset(0, 6).Value = Format(Now, "yyyymmdd") 'en colonne g
End Sub
 
- 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

Réponses
8
Affichages
400
Réponses
2
Affichages
413
Réponses
3
Affichages
403
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
525
Réponses
5
Affichages
926
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…