(VBA) Contrôle parametrage Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
R
Rag02700
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 4
Inscrit le : 26 décembre 2017
Version d'Excel : 2010

Message par Rag02700 » 8 janvier 2019, 20:44

Hello le forum,

Comment puis-je faire pour faire un contrôle entre 2 feuilles sur 3 cellules "liées".

Je m'explique :

Dans mon cas j'ai des commerciaux qui sont rattachés à une sous division qui elle même est rattachée à une division.
Je veux créer une procédure pour faire un contrôle entre la feuille 1 et la feuille 2.
Si les 3 valeurs (liées) ne sont pas présente dans ma feuille2, je veux un message qui m'indique que ces valeurs ne sont pas dans ma feuille2.
Sachant que dans mon vrai fichier ma feuille 1 peut comporter plusieurs millier de lignes.

Merci pour votre aide :)
Contrôle parametre.xlsx
(10.19 Kio) Téléchargé 6 fois
Avatar du membre
Florian53
Membre fidèle
Membre fidèle
Messages : 452
Appréciations reçues : 31
Inscrit le : 3 juin 2015
Version d'Excel : Office 365

Message par Florian53 » 8 janvier 2019, 21:17

Bonsoir Rag02700,

Voici un fichier a essayer si cela convient a ta demande.
Contrôle parametre.xlsx
(10.19 Kio) Téléchargé 4 fois
Les grandes réussites sont le fruit de l'apprentissage durable. Apprenez à apprendre chaque jour.

:btres:
R
Rag02700
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 4
Inscrit le : 26 décembre 2017
Version d'Excel : 2010

Message par Rag02700 » 8 janvier 2019, 21:49

Pas de macro dans le fichier ::D
Avatar du membre
Florian53
Membre fidèle
Membre fidèle
Messages : 452
Appréciations reçues : 31
Inscrit le : 3 juin 2015
Version d'Excel : Office 365

Message par Florian53 » 8 janvier 2019, 22:00

Désolé je me suis tromper de fichier :lol: :lol:
Contrôle parametre.xlsm
(18.9 Kio) Téléchargé 9 fois
Les grandes réussites sont le fruit de l'apprentissage durable. Apprenez à apprendre chaque jour.

:btres:
Avatar du membre
AMIR
Membre dévoué
Membre dévoué
Messages : 741
Appréciations reçues : 6
Inscrit le : 19 janvier 2015
Version d'Excel : 2007

Message par AMIR » 8 janvier 2019, 22:06

Salut Florian53, Rag02700
Pas de macro dans le fichier ::D
Désolé je me suis tromper de fichier :lol: :lol:
ça arrive
regarder cette proposition :
Private Sub CommandButton1_Click()
Dim drn1, drn2, i, j, c
drn1 = Sheets("Feuil1").Range("a" & Rows.Count).End(xlUp).Row
drn2 = Sheets("Feuil2").Range("a" & Rows.Count).End(xlUp).Row

tbl1 = Sheets("Feuil1").Range("a" & 1 & ":c" & drn1)
tbl2 = Sheets("Feuil2").Range("a" & 1 & ":c" & drn2)

For i = 1 To UBound(tbl1)
c = 0
For j = 1 To UBound(tbl2)
If tbl1(i, 1) & tbl1(i, 2) & tbl1(i, 3) _
= tbl2(j, 1) & tbl2(j, 2) & tbl2(j, 3) Then
c = c + 1
End If
Next

If c = 0 Then
rslt = rslt & "-" & tbl1(i, 1) & " " & tbl1(i, 2) & " " & tbl1(i, 3)
Sheets("Feuil1").Range("a" & i & ":c" & i).Interior.ColorIndex = 4
End If
Next
MsgBox "ces divisions sont absents sur la Feuil2" & rslt


End Sub
Contrôle parametre(1).xlsm
(21.54 Kio) Téléchargé 8 fois
Edit = Sheets("Feuil1").Range("a" & i & ":c" & i).Interior.ColorIndex = 4
R
Rag02700
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 4
Inscrit le : 26 décembre 2017
Version d'Excel : 2010

Message par Rag02700 » 9 janvier 2019, 20:41

Hello ,

Merci pour vos réponses et solutions :)

@ Florian53 je ne comprends pas comment fonctionne ton code ??? :bof: :bof:

J'utilise pas trop l’événement SelectionChange... Tu peux me rafraîchir la mémoire stp pour mon cas ::D ?

Merci.
Avatar du membre
Florian53
Membre fidèle
Membre fidèle
Messages : 452
Appréciations reçues : 31
Inscrit le : 3 juin 2015
Version d'Excel : Office 365

Message par Florian53 » 9 janvier 2019, 21:01

Bonsoir Rag02700,

L'objectif de worksheet_selection change est de lancer le code qui se trouve à l'intérieur de celui ci quand on modifie une cellule dans la feuille concernée.

Et pour éviter des déclenchements intempestifs de cette macro on cerne une plage de cellule pour ne lancer cette procédure que quand un clic intervient dans cette plage de cellule ( avec la méthode intersect)

On peut traduire cette ligne de programmation par :
Si la cellule active n'est pas dans la plage de cellule ( X) alors rien ( fin de procédure) sinon on parcourt le reste de la procédure.

Sans cette méthode ( intersect), le moindre changement dans n'importe quelle cellule de la feuille activerait cette procédure, qui dans ce cas est inutile.

J' espére que mes explications ton suffit pour comprendre le fonctionnement.
Les grandes réussites sont le fruit de l'apprentissage durable. Apprenez à apprendre chaque jour.

:btres:
R
Rag02700
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 4
Inscrit le : 26 décembre 2017
Version d'Excel : 2010

Message par Rag02700 » 9 janvier 2019, 22:34

Oui c'est clair.

En revanche, si j'ajoute une ligne dans la feuille 1 (dans mon cas ligne 4 ) avec une nouvelle division sous div et commercial qui n'est pas présente dans la feuille 2 je n'ai pas le message... :(

Obligé d'ajouter une ligne avant la ligne 3 ?
Avatar du membre
Florian53
Membre fidèle
Membre fidèle
Messages : 452
Appréciations reçues : 31
Inscrit le : 3 juin 2015
Version d'Excel : Office 365

Message par Florian53 » 10 janvier 2019, 06:47

Le code dispose d'une variable "derlgn" qui calcul automatiquement la dernière cellule non vide de la colonne "A" ensuite cette variable est utilisé dans la condition " intersect".

Le code s exécutera lorsqu'un clic interviendra dans la plage " A1:C" & derlgn.

Donc tu peux écrire en dessous de la ligne 3, le code fonctionnera pour toutes les autres lignes.
Les grandes réussites sont le fruit de l'apprentissage durable. Apprenez à apprendre chaque jour.

:btres:
R
Rag02700
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 4
Inscrit le : 26 décembre 2017
Version d'Excel : 2010

Message par Rag02700 » 10 janvier 2019, 19:30

Hello AMIR,

Ton code est top ... Juste une petite évolution :

Comment je peux faire un " supprimer les doublons" dans mon msgbox ?
Je veux que toutes les cellules non présentes dans feuille2 soient toutes en vert dans feuille1 mais le msgbox pour + de lisibilité avoir juste une ligne et pas toutes les lignes de la même valeur.

Tu peux m'expliquer cette ligne de code stp :
rslt = rslt & "-" & tbl1(i, 1) & " " & tbl1(i, 2) & " " & tbl1(i, 3) & vbLf
C'est surtout au premier passage car la variable n'est pas déclarer et finalement au premier passage dans la condition rslt c'est vide ... ::~ ::~ enfin je me comprend ::D Je comprends pas pourquoi au premier passage dans cette condition tu n'as pas d'erreur en fait ...

Merci a toi
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message