XL 2016 raccourcir code if

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Réflexion du dimanche matin après petit dej - nettoyage frimousse -ptit coup de peigne et p'tit brossage de dent comme dirait notre cher Staple1600,

Je voudrait raccourcir une code il et je ne sais pas faire.

Voilà ce que ça donne actuellement :
VB:
If Cells(ActiveCell.Row, 7) = "" And Cells(ActiveCell.Row, 10) = "" And Cells(ActiveCell.Row, 12) = "" And Cells(ActiveCell.Row, 17) = "" And Cells(ActiveCell.Row, 18) = "" Cells(ActiveCell.Row, 22) = "" And Cells(ActiveCell.Row, 20) = "" And [T3] <> "OK" Then [T3] <> "OK" Then

Est-il possible de coder autrement pour regrouper les conditions ="" en une seule ?

Avec mes remerciements,
Je vous souhaite à toutes et à tous, un très beau dimanche,
Amicalement,
lionel,
 

Staple1600

XLDnaute Barbatruc
Re

Donc qu'affiche cette MsgBox si ce n'est la ligne active !!!
(ou plutôt l'adresse des cellules des colonnes G,J,L,Q,R,T,V de la ligne active)
(je parle de la macro du message#14)


Ce sera peut-être plus clair avec cette autre macro de test
VB:
Sub test4()
Dim p As Range
Set p = Range("G1,J1,L1,Q1,R1,T1,V1").Offset(ActiveCell.Row - 1)
MsgBox p.Address
MsgBox Left(Split(p.Address, "$")(2), 2)
MsgBox ActiveCell.Row
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re, Bonjour eriiiic

Tu n'as pas une petit idée de que cette phrase peut bien vouloir dire ?
Mais je peux être sur n'importe ligne active et c'est "la ligne active" qui doit être analysée
lionel,
Parce que pour moi, la ligne active, comme son nom l'indique, elle est unique et active.
Et qu'on se trouve sur n'importe quelle ligne active, celle-ce sera toujours la ligne active, été comme hiver, et même les années bissextiles ;)
Et c'était déjà le cas dans Excel 4
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir endimanché,

Un grain de sel qui sent le fromage:

VB:
Public Sub boutonRechercheRob()
    Dim adr As String:  adr = Replace("G?,j?,L?,Q?,R?,T?,V?", "?", ActiveCell.Row)
     MsgBox Array("C'est bon", "C'est pas bon")(-(Application.CountA(Range(adr)) > 0 And Range("T3") = 1))
End Sub

Bonne soirée
 

Pièces jointes

  • raccourcir_code_if.xlsm
    20.9 KB · Affichages: 4

patricktoulon

XLDnaute Barbatruc
bonsoir a tous

Roblochon ++++++
je vous en donne une autre
dans le style
VB:
Public Sub boutonRechercheRob()
    Dim x
    x = Trim(Join(Application.Index(Application.Index(Rows(ActiveCell.Row).Value, [{1;1}], Array(10, 12, 17, 18, 20, 22)), 1, 0)))
 MsgBox Array("C'est bon", "C'est pas bon")(Abs(x <> ""))
End Sub
 

Staple1600

XLDnaute Barbatruc
Re, Bonsoir patricktoulon

Je sors juste la serpette, pour élagage avant ma tisane du soir ;)
VB:
Sub boutonRechercheRobA()
    Dim adr As String:  adr = Replace("G?,j?,L?,Q?,R?,T?,V?", "?", ActiveCell.Row)
     MsgBox "C'est " & Array("bon", "pas bon")(-(Application.CountA(Range(adr)) > 0 And Range("T3") = 1))
End Sub
Sub boutonRechercheRobB()
Dim x
With Application
.ScreenUpdating = False
x = Trim(Join(.Index(.Index(Rows(ActiveCell.Row).Value, [{1;1}], Array(10, 12, 17, 18, 20, 22)), 1, 0)))
MsgBox "C'est " & Array("bon", "pas bon")(Abs(x <> ""))
End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Pour finir, je sors du garage (et après relecture de tout le fil, je corrige la macro test4)
VB:
Sub test5()
Dim p As Range
Set p = Range("G1,J1,L1,Q1,R1,T1,V1").Offset(ActiveCell.Row - 1)
If Application.CountA(p) > 0 And [T3] = 1 Then
MsgBox "C'est bon"
Else
MsgBox "C'est pas bon"
End If
End Sub
 

Discussions similaires

Réponses
8
Affichages
501
Réponses
14
Affichages
1 K

Statistiques des forums

Discussions
312 321
Messages
2 087 251
Membres
103 497
dernier inscrit
FAHDE