Présence Valeur listée dans une ligne

Bonjour à tous,

dans un fichier, multi-utilisateur, contenant deux feuilles, j'ai besoin de vérifier avant la fermeture, que certaines valeurs soient bien présentes dans la ligne une de chaque feuille.

Si c'est le cas le fichier se ferme en indiquant que c'est bon, sinon, une msg box demande de vérifier les champs qui pourraient manquer.

J'ai écrit cette procédure qui ne fonctionne pas:

Private Sub beforeclose()

Dim wb As Workbook
Dim ws As Worksheet
Dim nomsPA As Variant
Dim nomsARRET As Variant

Set wsarret = Sheets("ARRET")
Set wspa = Sheets("PA")

nomsPA = Array("X", "Nom", "Numéro GA", "Numéro VP 1", "Numéro VP 2")
nomsARRET = Array("X", "Nom", "Adresse", "UR")

' vérifie la présence des valeurs dans la feuille ARRET

With wsarret

If Application.WorksheetFunction.CountIf(Range(1, 0), nomsARRET) Then
MsgBox "Tous les Champs ARRET sont remplis"

If not msgbox "Champs manquants"

Exit Sub

End If

End With

' vérifie la présence des valeurs dans la feuille PA

With wspa

If Application.WorksheetFunction.CountIf(Range(1, 0), nomsPA) Then
MsgBox "Tous les Champs sont remplis"

If not msgbox "Champs manquants"

Exit Sub

End If

End With

End Sub

Je suis conscient que cela reste du bricolage.

merci pour votre aide et votre implication.

Je vous souhaite une très belle journée

Henry.

Bonjour,

A première vue, je dirais qu'il vous manque juste

If Application.WorksheetFunction.CountIf(Range(1, 0), nomsARRET) = 4 Then

Par ailleurs, préférez Rows(1) à Range(1,0) car je doute que cette syntaxe soit correcte.

Cordialement,

Bonjour,

Essayez ceci :

Option Explicit

Private Sub beforeclose()
Dim wsarret As Worksheet, wspa As Worksheet
Dim i As Integer, feuille As String, Champ As String
Dim nomsPA As Variant, nomsARRET As Variant

Set wsarret = Sheets("ARRET")
Set wspa = Sheets("PA")
nomsPA = Array("X", "Nom", "Numéro GA", "Numéro VP 1", "Numéro VP 2")
nomsARRET = Array("X", "Nom", "Adresse", "UR")

' vérifie la présence des valeurs dans la feuille ARRET
With wsarret
    For i = LBound(nomsARRET) To UBound(nomsARRET)
        If Application.WorksheetFunction.CountIf(.Rows(1), nomsARRET(i)) = 0 Then
            Champ = nomsARRET(i)
            feuille = wsarret.Name
            GoTo ChampsManquants
        End If
    Next
End With

' vérifie la présence des valeurs dans la feuille PA
With wspa
    For i = LBound(nomsPA) To UBound(nomsPA)
        If Application.WorksheetFunction.CountIf(.Rows(1), nomsPA(i)) = 0 Then
            Champ = nomsPA(i)
            feuille = wspa.Name
            GoTo ChampsManquants
        End If
    Next
End With
MsgBox "Sortie autorisée"
Exit Sub

ChampsManquants:
    MsgBox "Champs """ & Champ & """ manquants dans la feuille : " & feuille
End Sub

Bonjour Messieurs,

merci, pour ces solutions, je m'en vais de ce pas les tester.

Bon après-midi

Merci pour votre investissement

Henry

Rechercher des sujets similaires à "presence valeur listee ligne"