XL 2016 Optimiser code VBA

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 !

MickaeL_D

XLDnaute Junior
Bonjour à tous les experts,

J'aimerai simplifier la ligne ci-dessous :

VB:
Loop Until (Not .Offset(0, -4).Value = "" And Not .Offset(0, -4).Value = "FAUX" And Not .Offset(0, -4).Value = " " And Not .Offset(0, -4).Value = "  " And Not .Offset(0, -4).Value = "." And Not .Offset(0, -4).Value = "..") Or (.Value >= Range("E30").Value And .Value <= Range("G30").Value)

L'objectif étant d'empêcher les utilisateurs de laisser l'Inputbox vide ou de la contourner via un ou plusieurs "espace" et/ou "point".

Issue du code ci-dessous (créer à l'aide d'experts Excel-download).

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cellule_en_Cours As Range
    If Not Intersect(Target, Range("F34:H999")) Is Nothing Then
        For Each Cellule_en_Cours In Intersect(Target, Range("F34:H999"))
            If Not (Range("F" & Cellule_en_Cours.Row) = "" Or Range("G" & Cellule_en_Cours.Row) = "" Or Range("H" & Cellule_en_Cours.Row) = "") Then
                With Range("AN" & Cellule_en_Cours.Row)
                    If (Not .Value = "" And (.Value < Range("E30").Value Or .Value > Range("G30").Value)) Or Not .Offset(0, -4).Value = "" Then
                        Do
                        ActiveSheet.Unprotect ("2230")
                            .Offset(0, -4).Value = InputBox(Prompt:="ATTENTION :" & Chr(13) & Chr(10) & "Valeur non-conforme" & Chr(13) & Chr(10) & "Un commentaire est requis")
                        ActiveSheet.Protect ("2230")
                        Loop Until (Not .Offset(0, -4).Value = "" And Not .Offset(0, -4).Value = "FAUX" And Not .Offset(0, -4).Value = " " And Not .Offset(0, -4).Value = "  " And Not .Offset(0, -4).Value = "." And Not .Offset(0, -4).Value = "..") Or (.Value >= Range("E30").Value And .Value <= Range("G30").Value)
                    End If
                End With
            End If
        Next Cellule_en_Cours
    End If
    If Not Intersect(Target, Range("I34:K999")) Is Nothing Then
        For Each Cellule_en_Cours In Intersect(Target, Range("I34:K999"))
            If Not (Range("I" & Cellule_en_Cours.Row) = "" Or Range("J" & Cellule_en_Cours.Row) = "" Or Range("K" & Cellule_en_Cours.Row) = "") Then
                With Range("AO" & Cellule_en_Cours.Row)
                    If (Not .Value = "" And (.Value < Range("E30").Value Or .Value > Range("G30").Value)) Or Not .Offset(0, -5).Value = "" Then
                        Do
                        ActiveSheet.Unprotect ("2230")
                            .Offset(0, -5).Value = InputBox(Prompt:="ATTENTION :" & Chr(13) & Chr(10) & "Valeur non-conforme" & Chr(13) & Chr(10) & "Un commentaire est requis")
                        ActiveSheet.Protect ("2230")
                        Loop Until (Not .Offset(0, -5).Value = "" And Not .Offset(0, -5).Value = "FAUX" And Not .Offset(0, -5).Value = " " And Not .Offset(0, -5).Value = "  " And Not .Offset(0, -5).Value = "." And Not .Offset(0, -5).Value = "..") Or (.Value >= Range("E30").Value And .Value <= Range("AC3").Value)
                    End If
                End With
            End If
        Next Cellule_en_Cours
    End If
End Sub

Merci d'avance,
 
Bonsoir
Déjà , pourquoi ne pas affecter une variable à l'inputBox puis la traiter ?? style ( là je sais pas ) if is ( or not) numeric ...etc
deb:
Reponse= inputbox .......
If isnumeric(reponse) then
....
si faux > goto deb
Ce n'est qu'un exemple , on ne connait pas le Type de réponse attendue
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
254
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
83
Réponses
4
Affichages
155
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
234
Réponses
4
Affichages
363
Réponses
0
Affichages
540
Retour