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 SubBonjour Messieurs,
merci, pour ces solutions, je m'en vais de ce pas les tester.
Bon après-midi
Merci pour votre investissement
Henry