macro avec with ... end with

anisse9

XLDnaute Nouveau
Bonjour,

Voici le scenario que je souhaite réaliser (en pj une image qui permet de mieux comprendre) :
L'utilisateur choisit une valeur au niveau de la cellule D4 ,en fonction de la valeur on affichera un ok ou un nok.
Ex : si l'utilisateur choisit D4=1GB
alors dans ce cas si C10=2.7.1 on affiche un ok en D10

Ex2 : si l'utilisateur choisit D4=superieur1GB
alors dans ce cas si C10=2.7.1 on affiche un nok en D10

Le souci est que j'ai toujours un "nok" j'ai limpression que mon debut de code n'est pas pris en compte.
Je pense qu'on peut le faire avec des imbrication de IF mais j'aimerais bien le faire avec des With merci de votre aide

Ce que j'ai fait :
Sub test()
'
' test Macro
'

'-------------------------------------------------------------------
'------------------------------------------RAM 1GB
With Range("D4").Value = "1GB"

'RAM 1GB Version Atoll 2.7.1
If Range("C10").Value = "2.7.1" Then
Range("D10").Value = "ok"
End If

End With
'-------------------------------------------------------------------
'-----------------------------------------------RAM superieur à 1GB
With Range("D4").Value = "superieur1GB"

'RAM superieur à 1GB Version Atoll 2.7.1
If Range("C10").Value = "2.7.1" Then
Range("D10").Value = "nok"
End If

End With

End Sub
 

Pièces jointes

  • image.jpg
    image.jpg
    34.9 KB · Affichages: 60
  • image.jpg
    image.jpg
    34.9 KB · Affichages: 63
  • image.jpg
    image.jpg
    34.9 KB · Affichages: 61

Efgé

XLDnaute Barbatruc
Re : macro avec with ... end with

Bonjour anisse9, TempusFugit,
Les With / End With ne s'utilisent pas dans ce sens, ils permettent de ne pas réutiliser le début d'une ligne.
Si tu veux absolument les utiliser cela donnerai ceci:
VB:
Sub test()
'RAM 1GB Version Atoll 2.7.1
With Range("D4")
    If .Value = "1GB" Then
        If Range("C10").Value = "2.7.1" Then
            Range("D10").Value = "ok"
        End If
    End If
End With
'RAM superieur à 1GB Version Atoll 2.7.1
With Range("D4")
    If .Value = "superieur1GB" Then
        If Range("C10").Value = "2.7.1" Then
            Range("D10").Value = "nok"
        End If
    End If
End With
End Sub
Mais on peux aller au plus simple:
VB:
Sub test2()
If Range("C10").Value = "2.7.1" Then
    If Range("D4").Value = "1GB" Then Range("D10").Value = "ok"
    If Range("D4").Value = "superieur1GB" Then Range("D10").Value = "nok"
End If
End Sub
Ce qui donne avec With / End With:
VB:
Sub test2()
If Range("C10").Value = "2.7.1" Then
    With Range("D4")
        If .Value = "1GB" Then Range("D10").Value = "ok"
        If .Value = "superieur1GB" Then Range("D10").Value = "nok"
    End With
End If
End Sub
Cordialement
 

TempusFugit

XLDnaute Impliqué
Re : macro avec with ... end with

OK


Voici une autre manière de procéder
Code:
Sub test()
Dim a As Range, b As Range
Set a = Range("D4")
Set b = Range("C10")
Range("D10") = Switch(a = "1GB" And b = "2.7.1", "ok", _
                a = "superieur1GB" And b = "2.7.1", "nok")
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 761
Messages
2 091 798
Membres
105 074
dernier inscrit
JPATOUNE