XL 2021 Cellule vide : sélectionner et atteindre

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous :)
Je vous souhaite un beau dimanche :)

Je n'arrive pas à coder correctement pour résoudre mon besoin :
- On ignore le clic en colonne "H"
- Si il y a une cellule vide dans les plages "g7:g dernière ligne" et "j7:s dernière ligne"
- Le MsgBox ("Manque Information dans la cellule ou Affectation de l'appel") s'affiche et la cellule vide est sélectionnée et atteinte.

Auriez-vous le bon code ?
En cas, je joins le petit fichier test.

Un grand merci à toutes et à tous :)
Je continue mes tâtonnements de "bricolou" :)
 

Pièces jointes

  • cellule vide test.xlsm
    21.7 KB · Affichages: 6
Solution
Bonjour
Regarde comme ceci,
à modifier ou pas avecles colonnes cahées

Private Sub Worksheet_SelectionChange(ByVal R As Range)
Application.EnableEvents = False
If Not Intersect(R, Range("h7:h30000")) Is Nothing And R.Count = 1 Then Exit Sub

With ActiveSheet
'MsgBox UsedRange.Rows.Count
drlg = .Cells(.UsedRange.Rows.Count, 5).End(xlUp).Row
Set zone = Union(.Range("g7:g" & drlg), .Range("s7:s" & drlg))
'zone.Select
For Each i In zone
If i = "" Then
MsgBox i.Address
i.Select
Application.EnableEvents = True
Exit Sub
End If

Next

End With
Application.EnableEvents = True
End Sub
' en cas d'arret de la macro en cour de route
Sub resetenents()
Application.EnableEvents = True
End Sub
Bjr sousou :)...

sousou

XLDnaute Barbatruc
Bonjour
Regarde comme ceci,
à modifier ou pas avecles colonnes cahées

Private Sub Worksheet_SelectionChange(ByVal R As Range)
Application.EnableEvents = False
If Not Intersect(R, Range("h7:h30000")) Is Nothing And R.Count = 1 Then Exit Sub

With ActiveSheet
'MsgBox UsedRange.Rows.Count
drlg = .Cells(.UsedRange.Rows.Count, 5).End(xlUp).Row
Set zone = Union(.Range("g7:g" & drlg), .Range("s7:s" & drlg))
'zone.Select
For Each i In zone
If i = "" Then
MsgBox i.Address
i.Select
Application.EnableEvents = True
Exit Sub
End If

Next

End With
Application.EnableEvents = True
End Sub
' en cas d'arret de la macro en cour de route
Sub resetenents()
Application.EnableEvents = True
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lionel, Sousou,

Encore une usine à gaz qui va ramer à mort avec un fichier de plusieurs centaines de lignes. :p

Ne serait il pas plus simple de mettre une MFC en G et J :
VB:
=ET($E7<>"";G7="")
et on compte les erreurs affiché en G2 avec :
Code:
=SI(NB.SI.ENS(E7:E1000;"<>";G7:G1000;"")+NB.SI.ENS(E7:E1000;"<>";J7:J1000;"")=0;"";"Attention ! " & NB.SI.ENS(E7:E1000;"<>";G7:G1000;"")+NB.SI.ENS(E7:E1000;"<>";J7:J1000;"")& " erreur(s) détectée(s)")
 

Pièces jointes

  • cellule vide test.xlsm
    19.8 KB · Affichages: 2

Usine à gaz

XLDnaute Barbatruc
Bonjour
Regarde comme ceci,
à modifier ou pas avecles colonnes cahées

Private Sub Worksheet_SelectionChange(ByVal R As Range)
Application.EnableEvents = False
If Not Intersect(R, Range("h7:h30000")) Is Nothing And R.Count = 1 Then Exit Sub

With ActiveSheet
'MsgBox UsedRange.Rows.Count
drlg = .Cells(.UsedRange.Rows.Count, 5).End(xlUp).Row
Set zone = Union(.Range("g7:g" & drlg), .Range("s7:s" & drlg))
'zone.Select
For Each i In zone
If i = "" Then
MsgBox i.Address
i.Select
Application.EnableEvents = True
Exit Sub
End If

Next

End With
Application.EnableEvents = True
End Sub
' en cas d'arret de la macro en cour de route
Sub resetenents()
Application.EnableEvents = True
End Sub
Bjr sousou :)
Merci pour le code.
Je l'ai tenté mais il ne se passe rien lol

Je rectifie : j'ai adapté ton code est c'est nickel.
Je te remercie
:)
:)
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Bonjour Lionel, Sousou,

Encore une usine à gaz qui va ramer à mort avec un fichier de plusieurs centaines de lignes. :p

Ne serait il pas plus simple de mettre une MFC en G et J :
VB:
=ET($E7<>"";G7="")
et on compte les erreurs affiché en G2 avec :
Code:
=SI(NB.SI.ENS(E7:E1000;"<>";G7:G1000;"")+NB.SI.ENS(E7:E1000;"<>";J7:J1000;"")=0;"";"Attention ! " & NB.SI.ENS(E7:E1000;"<>";G7:G1000;"")+NB.SI.ENS(E7:E1000;"<>";J7:J1000;"")& " erreur(s) détectée(s)")
Bjr sylvanu :)
Merci pour ta formule.
Elle fonctionne bien mais ça ne correspond pas à ma demande lol :)
QUOIQUE... je vais voir

Dans tous les cas, elle est super bien et je la garde.
lionel :)
 

fanch55

XLDnaute Barbatruc
Salut à tous, à la bourre car je reviens d'une promenade digestive ....
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plage As Range, Cvide As Range
    If Not Intersect(Target, Range("h7:h30000")) Is Nothing And Target.Count = 1 Then Exit Sub
    Lr = Cells(Rows.Count, "G").End(xlUp).Row
    Set Plage = Union(Range("G7:G" & Lr), _
                      Range("J7:M" & Lr), _
                      Range("P7:P" & Lr), _
                      Range("R7:S" & Lr))
    If Target.Count = 1 And Not Intersect(Target, Plage) Is Nothing Then
        Set Cvide = Plage.Find("")
        If Not Cvide Is Nothing Then
            ActiveWindow.ScrollRow = Cvide.Row
            Cvide.Select
        End If
    End If
End Sub
Ci-dessus le code que je n'avais pas posté
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re bonjour,
Mais je n'arrive pas à modifier ta formule !!! :mad:

Un essai en PJ avec en G2 :
VB:
=NB.SI.ENS(E7:E1000;"<>";G7:G1000;"")+
NB.SI.ENS(E7:E1000;"<>";J7:J1000;"")+
NB.SI.ENS(E7:E1000;"<>";K7:K1000;"")+
NB.SI.ENS(E7:E1000;"<>";L7:L1000;"")+
NB.SI.ENS(E7:E1000;"<>";M7:M1000;"")+
NB.SI.ENS(E7:E1000;"<>";P7:P1000;"")+
NB.SI.ENS(E7:E1000;"<>";R7:R1000;"")+
NB.SI.ENS(E7:E1000;"<>";S7:S1000;"")
Format personnalisé :
Code:
"Attention! "0" erreur(s) détectée(s)"
MFC : si G2=0 alors police blanche.
Dans les colonnes GJKLMPRS, MFC :
=ET($E7<>"";G7="")
 

Pièces jointes

  • cellule vide test 2.xlsm
    19.8 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonsoir Lionel, le fil,

Pour quelles raisons veux-tu rechercher les cellules vides ?

Cette macro les sélectionne comme tu le souhaites :
VB:
Sub CellulesVides()
On Error Resume Next 'si aucune SpecialCell
With [E7:E10000].SpecialCells(xlCellTypeConstants)
    With Intersect(.EntireRow, [G:G,J:M,P:P,R:S]).SpecialCells(xlCellTypeBlanks)
        .Select
        If Err = 0 Then MsgBox .Count & " cellule(s) vide(s)"
    End With
End With
End Sub
A+
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Bsr Gérard :)
le but est de bloquer toute autre action (tout clic ailleurs cellules et boutons) tant que la cellule n'est pas complétée.
Ton code fonction nickel (comme d'habitude :)).
Mais j'ai besoin que ce soit au clic (selection change).
Petites modif :
1 - sélection de la cellule E de la ligne où est la cellule vide (pas sélection de la cellule vide),
2 - Me laisser la possibilité" au clic sur la cellule vide la main pour que je puisse la remplir,

J'ai ajouté le fichier test avec les modifs de ma demande.

Merci gérard :)
 

Pièces jointes

  • cellule vide test.xlsm
    21.6 KB · Affichages: 2
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 123
Membres
112 666
dernier inscrit
Coco0505