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

XL 2016 Conditions VBA entre 2 colonnes

MickaeL_D

XLDnaute Junior
Bonjour,

Je souhaiterais ajouter une condition au code ci-dessous. Afin que la boite de dialogue s'affiche uniquement quand le chiffre 21 est rentré dans la colonne G.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCell As Range, Rg As Range
On Error Resume Next
Set Rg = Application.Intersect(Target, Range("D65000"))
If Not Rg Is Nothing Then
For Each xCell In Rg
If xCell.Value = "71076" Or xCell.Value = "605106" Or xCell.Value = "603149" Then
Dim Reponse As String
MsgBox "Renseigner la carte de ctrl CDC-CAU- 036 - Suivi masse après imprégnation tissu 711501", vbExclamation, "Remplir la carte de ctrl"
If Reponse = vbOK Then
ThisWorkbook.FollowHyperlink "S:\PRODUCTION\2010-2011\01 - Cartes de contrôle\ISOTEX\CDC-CAU- 036 - SUIVI MASSE ISOTEX APRES IMPREGNATION\CDC-CAU- 036 - Suivi masse après imprégnation.xlsx"
End If
End If
Next
End If
End Sub

Merci d'avance,
 
Solution
cela donnerait quelque chose comme cela, pouvant être conjugué avec un select case pour envoyer des messages différents par valeur entrée


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xCell As Range, Rg As Range
    On Error Resume Next
    Set Rg = Application.Intersect(Target, Range("G6:G5000"))
    If Not Rg Is Nothing Then
        For Each xCell In Rg
            If xCell.Value = 21 And (xCell.Offset(0, -3).Value = "71076" Or xCell.Offset(0, -3).Value = "605106" Or xCell.Offset(0, -3).Value = "603149") Then
                MsgBox "Renseigner la carte de ctrl CDC-CAU- 036 - Suivi masse après imprégnation tissu 711501", vbExclamation, "Remplir la carte de ctrl"
                ThisWorkbook.FollowHyperlink...
cela donnerait quelque chose comme cela, pouvant être conjugué avec un select case pour envoyer des messages différents par valeur entrée


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xCell As Range, Rg As Range
    On Error Resume Next
    Set Rg = Application.Intersect(Target, Range("G6:G5000"))
    If Not Rg Is Nothing Then
        For Each xCell In Rg
            If xCell.Value = 21 And (xCell.Offset(0, -3).Value = "71076" Or xCell.Offset(0, -3).Value = "605106" Or xCell.Offset(0, -3).Value = "603149") Then
                MsgBox "Renseigner la carte de ctrl CDC-CAU- 036 - Suivi masse après imprégnation tissu 711501", vbExclamation, "Remplir la carte de ctrl"
                ThisWorkbook.FollowHyperlink "S:\PRODUCTION\2010-2011\01 - Cartes de contrôle\ISOTEX\CDC-CAU- 036 - SUIVI MASSE ISOTEX APRES IMPREGNATION\CDC-CAU- 036 - Suivi masse après imprégnation.xlsx"
            End If
        Next
    End If
    Rg = Nothing
    Set Rg = Application.Intersect(Target, Range("D6:D5000"))
    If Not Rg Is Nothing Then
        For Each xCell In Rg
            Select Case xCell.Value
            Case Is = "71073"
                MsgBox "Renseigner la carte de ctrl CDC-CAU- 036 - Suivi masse après imprégnation tissu 711501", vbExclamation, "Remplir la carte de ctrl" ' message à mettre à jour
                'ThisWorkbook.FollowHyperlink "S:\PRODUCTION\2010-2011\01 - Cartes de contrôle\ISOTEX\CDC-CAU- 036 - SUIVI MASSE ISOTEX APRES IMPREGNATION\CDC-CAU- 036 - Suivi masse après imprégnation.xlsx"
            Case Else
            End Select
        Next
    End If
End Sub
 
Bonjour

Bien sur, c'est exactement cela
l'instruction s'exécutera en fonction du nombre entré correspondant à case = valeur, tu peux définir un message et un lien différent pour chaque valeur, l'exécution ira à end select si elle rencontre une autre instruction case.
Comme les instructions case évaluent la valeur dans l'ordre de leur implémentation, il vaut mieux mettre les plus fréquentes en premier pour diminuer le nombre d'évaluation en cas de nombre de valeurs importantes mais ce n'est pas une obligation.
On peut aussi mixer les valeurs si le code exécuté doit être le même
Case Is = "71073", "71074","71075"
j'ai laissé en mode texte car ton code fonctionnait comme cela mais la commande doit aussi normalement fonctionner comme cela
Case 71073, 71074, 71075

Cordialement
 

Discussions similaires

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