Bonjour,
Je suis débutante en VBA.
J'ai un fichier excel, stocké dans une feuille.
Je souhaiterai avertir l'utilisateur du fichier des données manquantes.
Pour cela, je parcours les lignes de mon tableau et si une cellule manque je le signale à l'utilisateur et je la stocke dans une autre feuille de sorte que la personne n'oublie pas quelles cellules manquent.
J'ai réussi à détecter et à signaler à l'utilisateur les cellules manquantes.
Mais le problème c'est qu'il y a des doublons. J'aimerai avertir une seule fois que la valeur de la cellule manque.
Par exemple :
On va dire que ma table de base c'est celle ci
A | B
_______ |___________
Martine |
Martin |Prescripteur
Dupond |
Dupond |
Dupond |
Dumas |Utilisateur
Martine |
Gérard |Utilisateur
Martin |Prescripteur
Je souhaite vérifier si le champ B est renseigné ou pas.
Si le champ n'est pas renseigné, j'indique à l'utilisateur que A a le champ B non renseigné.
Pour le cas de Dupond, vu que les 3 lignes avec le nom Dupond se suivent, j'arrive à signaler une seule fois à l'utilisateur que le champ B manque.
Je bloque au niveau de Martine. Je signale 2 fois à l'utilisateur que le champ B manque ( car les 2 lignes avec le Nom Martine ne se suivent pas).
Etant donné que je souhaite stocker les noms qui n'ont pas de champ B renseigné dans une autre table, je veux utiliser cette table pour chercher si le champ est renseigné ou pas.
Mon Code actuel ressemble à ça : ( En rouge ce que je veux rajouter mais qui ne fonctionne pas)
_____________________________________________
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Sub fonction_manquante()
Dim Lig As Long
Dim Nom
Lig = 2
While Cells(Lig, 5) <> ""
If Cells(Lig, 17) <> "" Then
Lig = Lig + 1
Else
If Range("K" & Lig) = Range("K" & Lig-1) or Range("K" & Lig) = Worksheets("Feuil1").Range("A1:A100") Then
Lig = Lig + 1
Else
Worksheets("Feuil1").Range("A1").Value = Worksheets("Données").Range("K" & Lig).Value
MsgBox "L'utilisateur " & Cells(Lig, 11) & " " & Cells(Lig, 12) & " avec l'IDRH : " & Cells(Lig, 5) & " n'a pas de fonction renseignée.",vbCritical
Lig = Lig + 1
End If
End If
Wend
End Sub |
_______________________________________________
Pour Worksheets("Feuil1").Range("A1").Value = Worksheets("Données").Range("K" & Lig).Value --> Je voudrais que ça colle la valeur à la suite des valeurs existantes (Si il y a 4 lignes non vide, ça colle à la 5ème ligne)
J'espère avoir été clair. Merci à vous de m'avoir lu et j'espère que vous pourrez m'aider.
Bonne journée.
Partager