macro identifier cellule sous condition

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:
C

Compte Supprimé 979

Guest
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+
 

yanacrux

XLDnaute Nouveau
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

  • PCA.xls
    41 KB · Affichages: 59
C

Compte Supprimé 979

Guest
Re : macro identifier cellule sous condition

Salut Yanacrux,

Ci-joint ton fichier avec un petit code VBA dans ta feuille "PCA"

Essaye de choisir/saisir la valeur : 1, dans ta cellule D8 :D

A+
 

Pièces jointes

  • Yanacrux_PCA.xls
    41.5 KB · Affichages: 60
  • Yanacrux_PCA.xls
    41.5 KB · Affichages: 62
  • Yanacrux_PCA.xls
    41.5 KB · Affichages: 65

yanacrux

XLDnaute Nouveau
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: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
Encore merci,
 
Dernière édition:
C

Compte Supprimé 979

Guest
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 :eek:

A+
 

Pièces jointes

  • Yanacrux_PCA.xls
    41 KB · Affichages: 53
  • Yanacrux_PCA.xls
    41 KB · Affichages: 53
  • Yanacrux_PCA.xls
    41 KB · Affichages: 52
Dernière modification par un modérateur:

yanacrux

XLDnaute Nouveau
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 !
 
C

Compte Supprimé 979

Guest
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+
 

yanacrux

XLDnaute Nouveau
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,
 

yanacrux

XLDnaute Nouveau
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

  • SuiviDM_test.xls
    42 KB · Affichages: 51
C

Compte Supprimé 979

Guest
Re : macro identifier cellule sous condition

Bonsoir Yanacrux,

Il faut transformer le code pour une valeur texte

Voir fichier joint ;)
 

Pièces jointes

  • Yanacrux_SuiviDM_test.xls
    38.5 KB · Affichages: 37

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 979
Membres
103 419
dernier inscrit
mk29