Bonsoir à tous,
Je viens de créer une macro pour la création d’une banque de données. Elle retranscrit des fiches papiers en listes sur Excel 2013.
Afin de faciliter l’opération de retranscription, j’ai opté pour une feuille Excel qui reproduit la mise en page de la fiche papier. Son contenu est ensuite copié en feuille 2 ‘Recueil données’ par la macro Ajouter_fiche. Ainsi les fiches sont en lignes et les variables en colonnes.
Parmi les variables, il y a le numéro de la fiche (Formulaire!C5).
J’aimerai créer un événement Worksheet_Change qui me permet de vérifier que le nombre saisie dans la case Formulaire!C5 n’est pas déjà existant dans la colonne ‘Recueil données’!A:A
Pour y parvenir j’ai trouver cette ligne de code VBA dans la partie tutoriel, mais je n’arrive pas à l’adapter à mon document.
La voici :
Pouvez-vous m’éclairer svp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Option Explicit Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim Colonne As Integer Dim Adresse As String 'On sort si plus d'une cellule a été modifiée If Target.Count > 1 Then Exit Sub 'On sort si la cellule modifiée est vide If Target.Value = "" Then Exit Sub 'Définit la colonne à vérifier (1=Colonne A, 2=colonne B ...etc...) Colonne = 1 'Vérifie si c'est la colonne cible a été modifiée If Target.Column = Colonne Then 'Recherche si la nouvelle donnée existe déjà dans la colonne. Adresse = Columns(Colonne).Find(What:=Target.Value, After:=Target.Offset(1, 0), LookAt:=xlWhole, _ SearchDirection:=xlNext).Address 'Si l'adresse de cellule trouvée ne correspond pas à la cellule modifiée, cela 'signifie qu'il y a un doublon dans la colonne. If Adresse <> Target.Address Then MsgBox "La donnée '" & Target & "' existe déjà dans la cellule " & Adresse 'Suppression de la donnée Target.Value = "" Target.Select End If End If End Sub
Arnaud M
Partager