XL 2021 Comparaison de cellules avec une autre plage de celllules

phenolate

XLDnaute Nouveau
Bonjour,

J'ai une colonne A client dans laquelle j'entre les noms (de A2 à A6).

J'ai également une ligne clients (de B9 à F9) pour laquelle je peux choisir le nom d'un des clients rentrés dans ma première colonne A (listes avec source A2:A6).

Je voudrais créer une macro qui pourrait m'alerter lorsqu'il manque un des clients dans ma ligne 9 par rapport à ma liste de la colonne A et m'envoyer un message du type ("Tous les clients saisis en A doivent apparaître dans la ligne 9").

Par exemple dans le fichier excel/photo fournie il manque le client Bill.

Capture d’écran 2023-06-02 à 14.20.38.png


J'espère ne pas vous avoir perdu, je peux clarifier les choses si cela ne vous paraît pas net.

Merci par avance!
 

Pièces jointes

  • Comparaison clients.xls
    27.5 KB · Affichages: 6
Solution
Bonsoir à tous,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [A1].CurrentRegion
    If .Rows.Count = 1 Then Exit Sub
    .Offset(1).Resize(.Rows.Count - 1).Name = "P" 'plage nommée
    If [SUM(-(COUNTIF(9:9,P)=0))] Then _
        MsgBox "Tous les clients saisis en A doivent apparaître dans la ligne 9"
End With
End Sub
Modifiez ou validez une cellule quelconque.

A+

Jacky67

XLDnaute Barbatruc
Bonjour,

J'ai une colonne A client dans laquelle j'entre les noms (de A2 à A6).

J'ai également une ligne clients (de B9 à F9) pour laquelle je peux choisir le nom d'un des clients rentrés dans ma première colonne A (listes avec source A2:A6).

Je voudrais créer une macro qui pourrait m'alerter lorsqu'il manque un des clients dans ma ligne 9 par rapport à ma liste de la colonne A et m'envoyer un message du type ("Tous les clients saisis en A doivent apparaître dans la ligne 9").

Par exemple dans le fichier excel/photo fournie il manque le client Bill.

Regarde la pièce jointe 1171464

J'espère ne pas vous avoir perdu, je peux clarifier les choses si cela ne vous paraît pas net.

Merci par avance!
Bonjour,
Une proposition qui mettra automatiquement la plage A9:F9 à jour en cas de modification dans une des plages
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [a1:a6,a9:f9]) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    [A1:A6].Copy
    [A9].PasteSpecial Paste:=xlPasteAll, Transpose:=True
    Application.EnableEvents = True: Application.CutCopyMode = False
End Sub
 

Pièces jointes

  • Comparaison clients .xls
    74.5 KB · Affichages: 2
Dernière édition:

phenolate

XLDnaute Nouveau
Merci beaucoup de vous pencher sur mon sujet mais ce n'est pas ce que je demande, j'ai dû mal m'exprimer :

En fait une fois remplis mes clients en colonne A, je les sélectionne dans un autre tableau (ligne 9), ensuite je clique sur un bouton pour exécuter tout un tas d'opérations dans mon fichier final...Lorsque je clique sur le bouton je veux un message d'erreur au cas où tous mes noms de clients n'apparaissent pas dans la ligne 9. S'ils y sont tous mon action peut alors continuer...

Est-ce un peu plus clair?
Merci!🫣
 

phenolate

XLDnaute Nouveau
Petite question subsidiaire, vous m'avez envoyé un fichier .xls, or quand je crée des macros j'enregistrais en .xlsm, je pensais y être obligé pour lancer mes macros, mais apparemment le votre fonctionne en xls! pouvez-vous m'expliquer la nuance entre les deux types de fichier svp?
Merci!
 

Jacky67

XLDnaute Barbatruc
Petite question subsidiaire, vous m'avez envoyé un fichier .xls, or quand je crée des macros j'enregistrais en .xlsm, je pensais y être obligé pour lancer mes macros, mais apparemment le votre fonctionne en xls! pouvez-vous m'expliquer la nuance entre les deux types de fichier svp?
Merci!
RE..
J'ai enregistré le classeur au même format que celui présent dans la demande.
Les anciens fichiers sous. XLS (97-2003) supportent les macros.
Si ma proposition ne donne pas satisfaction, alors mettre un classeur qui reflète la structure du classeur final avec les macros déjà présentes qui sont sujet à modification.
 
Dernière édition:

phenolate

XLDnaute Nouveau
RE..
J'ai enregistré le classeur au même format que celui présent dans la demande.
Si ma proposition ne donne pas satisfaction, alors mettre un classeur qui reflète la structure du classeur final avec les macro déjà présentes qui sont sujet à modification.
Non je trouvais justement bien de pouvoir utiliser les macros sans mettre le format .xlsm c'était le but de ma question je cherche à comprendre...
 

job75

XLDnaute Barbatruc
Bonsoir à tous,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [A1].CurrentRegion
    If .Rows.Count = 1 Then Exit Sub
    .Offset(1).Resize(.Rows.Count - 1).Name = "P" 'plage nommée
    If [SUM(-(COUNTIF(9:9,P)=0))] Then _
        MsgBox "Tous les clients saisis en A doivent apparaître dans la ligne 9"
End With
End Sub
Modifiez ou validez une cellule quelconque.

A+
 

Pièces jointes

  • Comparaison clients.xls
    37 KB · Affichages: 5

phenolate

XLDnaute Nouveau
Bonjour,
J'ai adapté votre fichier à mon projet en créant un bouton qui compare avec les clients sélectionnés en 1ere colonne mais ça ne fonctionne pas dans tous les cas, quand j'enlève le client en case B9 je n'ai pas le message, pourriez-vous me dire pourquoi svp et détailler l'instruction If [SUM(-(COUNTIF(9:9,P)=0))] car je n'y comprend rien...

Merci !
 

Pièces jointes

  • Copie de Comparaison clients.xls
    38 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour phenolate, le forum,
quand j'enlève le client en case B9 je n'ai pas le message, pourriez-vous me dire pourquoi svp
Pas du tout, il faut juste utiliser le bon code :
VB:
Sub Bouton2_Cliquer()
With [A1].CurrentRegion
    If .Rows.Count = 1 Then Exit Sub
    .Offset(1).Resize(.Rows.Count - 1).Name = "P" 'plage nommée
    If [SUM(-(COUNTIF(9:9,P)=0))] Then _
        MsgBox "Tous les clients saisis en A doivent apparaître dans la ligne 9"
End With
End Sub
La formule SUM(-(COUNTIF(9:9,P)=0)) c'est la même chose que la formule matricielle :
Code:
=SOMME(-(NB.SI(9:9,P)=0))
ou :
Code:
=SOMMEPROD(-(NB.SI(9:9,P)=0))
Le signe - convertit la valeur logique VRAI en -1 et FAUX en 0.

A+
 

Pièces jointes

  • Copie de Comparaison clients.xls
    37.5 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 305
Membres
103 174
dernier inscrit
OBUTT