macro identifier cellule sous condition

  • Initiateur de la discussion Initiateur de la discussion yanacrux
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

yanacrux

XLDnaute Nouveau
Bonjour à tous,

Etant débutant en VBA, je tourne en rond pour trouver une solution pratique à mon problème !
Je souhaiterais afficher un message box si une cellule prend la valeur d'une cellule déja existante dans la colonne sous condition d'une autre colonne.
La colonne D indique un N° d'appareil, entre E et H il y a les dates de mise en service, et en I il y a l'état du retour de l'appareil :
| D |....| I |
| 1 |....| OK |
| 2 |....| OK |
| 3 |....| |
| 1 |....| |
Par exemple, je voudrais que si dans la colonne "D" je retrouve 2 fois la valeur "1" alors qu'il n'y a pas "OK" en "I" pour le premier, c'est que l'appareil est sorti donc il faudrait affiché un msgbox dans le style "Appareil deja en service". A l'inverse, si dans la colonne "I" il apparait bien "OK" et que je retrouve plusieur "1", rien ne s'affiche !
J'espère avoir été assez clair dans mes explications.
D'avance merci de ce que vous pourrez faire car je suis rééllement coincé !
Cordialement,
 
Dernière édition:
Re : macro identifier cellule sous condition

Salut Yanacrux, bienvenue sur le forum

Rien ne vaut un fichier avant / après, plutôt qu'une tentative d'explication trop longue.

Perso je me suis arrêté au premier paragraphe et je n'ai rien compris 😉

Merci de bien vouloir nous joindre un fichier STP

A+
 
Re : macro identifier cellule sous condition

Merci pour votre accueil, ci-joint le fichier xls. Je vais essayer d'éclaircir mon objectif :
je souhaite faire afficher un msgbox ("PCA deja en service par exemple) quand un N°PCA se retrouve en doublon si la condition "RETOUR" (colonne I) n'est pas sur OK !
Le but étant de signaler à l'utilisateur que la PCA est déja distribuée pour en choisir une autre dans la liste !
 

Pièces jointes

Re : macro identifier cellule sous condition

Super efficace, merci beaucoup!
J'ai ajouté Case pour les autres N° de PCA ! Ca semble bien marcher !
Function TotDifOK(NumPCA)
TotDifOK = 0
On Error Resume Next
Select Case NumPCA
Case 1
' Evaluer le nombre de non OK pour le PCA
TotDifOK = Application.Evaluate("SUMPRODUCT((D4😀65535=1)*(I4:I65535<>""OK""))")
Case 2
TotDifOK = Application.Evaluate("SUMPRODUCT((D4😀65535=2)*(I4:I65535<>""OK""))")
Case 3
TotDifOK = Application.Evaluate("SUMPRODUCT((D4😀65535=3)*(I4:I65535<>""OK""))")
Case 4
TotDifOK = Application.Evaluate("SUMPRODUCT((D4😀65535=4)*(I4:I65535<>""OK""))")
Case 5
TotDifOK = Application.Evaluate("SUMPRODUCT((D4😀65535=5)*(I4:I65535<>""OK""))")
Case 6
TotDifOK = Application.Evaluate("SUMPRODUCT((D4😀65535=6)*(I4:I65535<>""OK""))")
Case 7
TotDifOK = Application.Evaluate("SUMPRODUCT((D4😀65535=7)*(I4:I65535<>""OK""))")
Case 8
TotDifOK = Application.Evaluate("SUMPRODUCT((D4😀65535=8)*(I4:I65535<>""OK""))")
Case Else
End Select
On Error GoTo 0
End Function
Encore merci,
 
Dernière édition:
Re : macro identifier cellule sous condition

Salut Yanacrux,

Tu n'avais absolument pas besoin de mettre des cases,
simplement d'utiliser la variable "NumPCA"

Ce que j'ai oublié de faire 😱

A+
 

Pièces jointes

Dernière modification par un modérateur:
Re : macro identifier cellule sous condition

Voila la modification plutôt artisanale que j'ai apporté à ton code:
Code:
Function TotDifOK(NumPCA)
  TotDifOK = 0
  On Error Resume Next
  Select Case NumPCA
  Case 1
  ' Evaluer le nombre de non OK pour le PCA
  TotDifOK = Application.Evaluate("SUMPRODUCT((D4:D65535=1)*(I4:I65535<>""OK""))")
  Case 2
  TotDifOK = Application.Evaluate("SUMPRODUCT((D4:D65535=2)*(I4:I65535<>""OK""))")
  Case 3
  TotDifOK = Application.Evaluate("SUMPRODUCT((D4:D65535=3)*(I4:I65535<>""OK""))")
  Case 4
  TotDifOK = Application.Evaluate("SUMPRODUCT((D4:D65535=4)*(I4:I65535<>""OK""))")
  Case 5
  TotDifOK = Application.Evaluate("SUMPRODUCT((D4:D65535=5)*(I4:I65535<>""OK""))")
  Case 6
  TotDifOK = Application.Evaluate("SUMPRODUCT((D4:D65535=6)*(I4:I65535<>""OK""))")
  Case 7
  TotDifOK = Application.Evaluate("SUMPRODUCT((D4:D65535=7)*(I4:I65535<>""OK""))")
  Case 8
  TotDifOK = Application.Evaluate("SUMPRODUCT((D4:D65535=8)*(I4:I65535<>""OK""))")
  Case Else
  End Select
  On Error GoTo 0
End Function
Cela fonctionne très bien mais par curiosité comment utiliser la variable NumPCA ?
Sinon j'ai aussi exploité ton code pour afficher le Nb de PCA dispo dans la cellule A2 :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x As String
x = Application.Evaluate("SUMPRODUCT((D4:D65535=1)*(I4:I65535<>""OK""))") _
    + Application.Evaluate("SUMPRODUCT((D4:D65535=2)*(I4:I65535<>""OK""))") _
    + Application.Evaluate("SUMPRODUCT((D4:D65535=3)*(I4:I65535<>""OK""))") _
    + Application.Evaluate("SUMPRODUCT((D4:D65535=4)*(I4:I65535<>""OK""))") _
    + Application.Evaluate("SUMPRODUCT((D4:D65535=5)*(I4:I65535<>""OK""))") _
    + Application.Evaluate("SUMPRODUCT((D4:D65535=6)*(I4:I65535<>""OK""))") _
    + Application.Evaluate("SUMPRODUCT((D4:D65535=7)*(I4:I65535<>""OK""))") _
    + Application.Evaluate("SUMPRODUCT((D4:D65535=8)*(I4:I65535<>""OK""))")
    Range("A2").Value = "" & x & " PCA en service - " & 8 - x & " Disponible(s)"
End Sub
Merci pour ton aide précieuse !
 
Re : macro identifier cellule sous condition

Re,

Si je t'ai joins un nouveau fichier (plus haut), tu penses bien que j'ai fait la modification dedans 😉

Ouvre le et regarde le code 🙂

A+
 
Re : macro identifier cellule sous condition

Bonjour,

Je souhaiterais pour une autre application dans le même style, non plus avoir des N° dans ma liste mais des N° et la description ( par exemple : 01:respirateur), j'ai donc modifié le code :
Code:
 Dim Lig As Long, NumPCA As Integer, s As String
  ...
 s = Left(Target.Value, 2)
  NumPCA = CDec(s)
  MsgBox (s)
  MsgBox (NumPCA)
J'ai bien "01" en retour pour s et "1" pour NumPCA mais le reste du code ne fonctionne pas (If NumPCA > 0) !
D'ou peut venir le soucis ?
Merci,
 
Re : macro identifier cellule sous condition

Donc ci-joint, le fichier basé sur la même base que le 1er, sauf que je souhaite afficher dans la colonne D le 'N° : Référence' de chaque dispositif !
Et avoir la même fonction : signaler si un dispositif est deja sortie si il n'y a pas OK en retour !


Merci,
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
221
Réponses
3
Affichages
119
Réponses
6
Affichages
192
Retour