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

XL 2021 Cellule vide : sélectionner et atteindre

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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
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.

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
Supporter XLD
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
Supporter XLD
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 !!!

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
Supporter XLD
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: 1
Dernière édition:

Discussions similaires

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