Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Afficher un userform à la suite d'un résultat

Manu13

XLDnaute Occasionnel
Bonjour le FORUM

Je voulais afficher un userform suite à un résultat bien précis, cela fonctionnait si je faisait référence à une cellule, mais à une plage de cellules plantage
voilà ce que j'avais fait

[Private Sub Worksheet_Change(ByVal Target As Range)
if range('a1:d30').value = '100' then
userform1.show
end if
End Sub]

ça fonctionnait si je mettais que range('a1')par exemple mais avec une plage plantage?

Merci par avance
Manu
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Manu, bonjour le forum,

Essaie comme ça (Attention, les synboles Supérieur, Inférieur posent problème, j'ai donc écris DIFFÉRENT DE à la place dans le code) :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
For Each cel In Range('A130')
If cel.Value DIFFÉRENT DE '100' Then Exit Sub
Next cel
UserForm1.Show
End Sub
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Manu, Robert, le Forum

Arf Robert est allé un peu vite, il fait l'inverse, il sort dès qu'il n'y a pas la Valeur '100' (en plus en string)...

Je propose ceci :


En prime si tu dois avoir un scan sur des valeurs modifiées par des Formules, on peut aussi déclencher la même évènementielle avec ceci :

Private Sub Worksheet_Calculate()
    Worksheet_Change Me.Range('A1')
End Sub


Bon Appétit
[ol]@+Thierry[/ol]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
_Thierry écrit:

EDITION !!!
J'avais oublié d'utiliser ma belle variable Double 'ValSearched'...
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Mnu, THierry, bonjour le forum,

J'avais compris que si toutes les cellules de la plage A130 contenaient la valeur '100' (en string comme le demandait Manu) alors l'UserForm1 s'affichait. Si c'est bien de cela qu'il s'agit alors, je presisite et signe, mon code fonctionne parfaitement. En changeant DIFFÉRENT DE par les symboles inférieur supérieur.
 

Manu13

XLDnaute Occasionnel
Bonjour _Thierry et Robert

Ma demande était bien si:
dans une plage de cellule ('A1:d30') par exemple dès qu'il apparait le chiffre 100 alors userform

Thierry cela fonctionne mais la boucle me retrouve le chiffre 100 lorsqu'un nouveau chiffre différent de 100 et me lance userform
par conséquent tant qu'il n'y a pas le chiffre 100 Ok, mais dès qu'il y a le chiffre 100 la plage l'userform apparait normal c'est la demande, mais lorsqu' un autre chiffre arrive différent de 100 l'userform apparait comme même!!!!
comment faire pour que l'userform ne vienne que lors d'un chiffre 100 ou un nouveau chiffre 100.
en tout cas merci pour votre aide
et bonne journée
Manu
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour cher Robert, Manu

Arf oui tout est interprétation... Si on va chercher dans le coté obscure de la force alors tu peux persister mon cher Robert !

Mais il est vrai aussi que notre ami Manu ne nous a pas vraiment éclairé de détails... Car si on transcrit litéralement 'suite à un résultat bien précis sur une plage' la valeur recherchée pourrait être en fait le cumul de toutes les valeurs additionnées dans cette fameuses plage...

Si jamais tel était le cas, voici une variante :


Bon Après midi
[ol]@+Thierry[/ol]

EDITION !!!
Désolé je n'avais pas raffraichi... Donc cette réponse ne correspond pas à ta dernière demande...

Pour celle-ci, je reviens...

[ol]@+Thierry[/ol]

Message édité par: _Thierry, à: 15/02/2006 14:48
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour Manu, la Grande Trume (lol), le Forum

Une approche avec un Tag en utilisant les commentaires, La Private Function est de mon copain STéphane.



Et si on veut nettoyer, il faut Léon :

Private Sub CommandButton1_Click() 'Léon Le Nettoyeur
Dim C As Comment

   
For Each C In ActiveSheet.Comments
       
If C.Text = 'Tagged' Then C.Delete
   
Next
End Sub


Bon Aprèm
[ol]@+Thierry[/ol]

Message édité par: _Thierry, à: 15/02/2006 15:20
 

Manu13

XLDnaute Occasionnel
_Thierry, Robert et le forum

merci beaucoup thierry c'est extra et encore désolé pour vous avoir fait gaspillé du temps sur une mausaise piste, mais pas perdu comme même code intérressent que je garde ( je parje des premiers codes... bien sur) car le dernier correspond exactement à ma recherche.
bon maintenant je vais essayer de comprendre ton code Thierry pour ne pas l'appliquer bêtement!!!
mais d'or et déjà si tu as un peu de temps pour expliquer le role en utilisant les commentaires et par conséquent la private function.
merci par avance
merci à Robert et Thierry pour leur aide
A bientôt
Manu
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Manu, Robert la Grande Trume (re LOL)

C'est en fait assez simple, j'utilise les commentaires comme étant un Tag sur la Cellule...

Si cette cellule est déjà 'Taggée' et bien elle est ignorée puisque je cherche seulement dans ma condition si elle n'a pas de 'comment' par cette ligne :

If HasComment(Cell) = False Then

HasComment est une petite fonction toute simple de mon ami STéphane qui retournera une valeur Boolean (Vrai / Faux) si une erreur est générée suite à cette commande :

Com = Cell.Comment.Text

Ensuite il suffit de 'lire' l'erreur :

Select Case Err
Case 0
HasComment = True


Pas d'erreur (0) donc elle a un commentaire la valeur est Vraie...

Case 91
HasComment = False
Case Else
HasComment = False


Erreur 91 (ou autres) donc pas de commentaire la Valeur est Fausse...

Voilà c'est très simple... Pour ta compréhension, je pourrai aussi utiliser une autre propriété de Cellule ici la couleur intérieure de la Cellule plutôt que de lui adjoindre un Comment :


Je pourrai autrement être encore plus tordu en m'appuyant sur la Propriété 'FormulaHidden' par exemple et ça donnerait ceci :


Enfin il y a de quoi 'tagger' les cellules, pour ce genre de job...

Bon Aprèm
[ol]@+Thierry[/ol]
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…