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

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
 

Staple1600

XLDnaute Barbatruc
Re

arthour973
Tu as testé les macros test3 et test4* ????
Si oui, ce qui s'affiche correspond bien à la ligne active, non ?
Je ne comprends pas qu'un barbatruc comme toi bloque sur ce bout de code

*: voir macro dans le message#16
 

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
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour JM, Eriiiic,

Bonjour Roblochon, Patrick,

Les codes de Roblochon et de Patrick fonctionnent nickel, je vous en remercie

Merci à vous tous pour m'avoir aidé car j'avais déjà avancé (sans résoudre complètement) avec les codes de JM et d'Eriiiic.
Bonne fin de dimanche,
Amicalement,
lionel,
 

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
531
Réponses
14
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…