problème avec worsheet_change

natbru

XLDnaute Occasionnel
Bonjour et joyeux noël a tous,

quand même le jour du réveillon sur excel, ca craint, mais bon je vais tout de meme vous poser ma question !!

Je cherche à ouvrir un userform lorsque ma valeur de la cellule S5 est modifié en 'GAGNE'

J'ai mis le code suivant sur la feuille 'AFFAIRES' mais ca ne fonctionne pas ??

Code:
Sub worksheet_Change(ByVal Target As Range)

Range('s5').Value = Target.Value

If Range('S5').Value = 'GAGNE' Then Produits.Show
    
End Sub

De plus, je voudrais que ce soit dynamique quand je crée une nouvelle affaire.

Je ne suis pas sure d'etre claire mais mon fichier ci-joint devrait être plus expressif.

Merci.
 

natbru

XLDnaute Occasionnel
Bonjour DAN,

J'ai testé le code que tu m'a donné mais ca ne va encore pas car maintenant lorsque qu'une nouvelle affaire est insérée, les cellules qui ne contiennent pas de formules ne sont pas effacées. De plus, la ligne s'insère en avant dernière sur le tableau alors qu'il faudrait qu'elle s'insère soit en dernière, soit en première.

Mais je te remercie beaucoup pour le temps que tu m'as consacré. Je crois que j'ai visé un peu trop haut pour débuter en vba, je vais donc me laisser ce problème de côte pour le moment et je vais essayer d'apprendre des choses plus simple d'abord.

Encore mille mercis.

A bientot sur le forum.
 

Dan

XLDnaute Barbatruc
Bonsoir Natbru,

Bien lu ton message. J'ai deux questions par rapport à cela :

- Est-ce que l'on peut copier la nouvelle ligne en ligne 4 car tu as laissé une ligne vide dans ton fichier.
- Quelles sont les endroits (colonnes) où il y a des formules. Icic je ne vois des formules que dans la colonne A.

Merci

;)
 

natbru

XLDnaute Occasionnel
Bonjour DAN,

Voici les réponses à tes deux questions :

- j'ai laissé la ligne 4 vide car j'ai nommé des plages de cellules (exemple : selectionne (s4;s5), tu verras que ca s'appelle 'résultat'), hors si tu copies en ligne 4 lorsque tu insère des lignes par la suite la plage 'resultat' ne va pas s'agrandir avec l'insertion de ligne mais se contenter de rester (s4;s5), je ne sais pas si je suis trés claire (c dur a expliquer).
J'ai fait comme ça car je ne voyais pas comment faire autrement, je me sers des noms des plages pour écrire les formules sur la feuille 'COMPTEUR PARIS'.


- les colonnes A et V contiennent des formules et en plus il y a la mise en forme conditionnelle.

Merci et à bientôt.
 

Dan

XLDnaute Barbatruc
Bonjour,

Merci mais je ne comprends toujours pas ton explication au sujet de la ligne 4. Je vois bien que tu as attribué un nom 'Résultats' à la plage S4:S5; mais à mon avis c'est uniquement à la plage active que cela doit être appliqué (donc S5 dans tonn cas).

Essaie ce correctif à la macro 'Inserelignes' :
Code:
Sub INSERERLIGNES()
'Macro par DAN pour natbru
'Fil : [B]Lien supprimé[/B]

With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With
Sheets('AFFAIRES').Range('A65536').End(xlUp).Activate
With ActiveCell
    .EntireRow.Offset(0, 0).Copy
    .Insert Shift:=xlDown
End With
i = 2
For i = 2 To 21
ActiveCell(1, i) = ''
Next i
With Application
    .EnableEvents = True
    .CutCopyMode = False
    .ScreenUpdating = False
End With
End Sub

La macro conserve la mise en forme conditionnelle et supprime les données comprises entre la colonne 2 et 21.

A te lire

;)
 

natbru

XLDnaute Occasionnel
Bonjour DAN,

Concernant le rectif de ta macro, c'est niquel, sauf une petite chose, les lignes sont insérer à l'avant dernière place et non à la dernière (ou première) mais plus de problème concernant l'ouverture du USF.

Concernant cette fameuse ligne 4, le mieux est que tu fasses la manip suivante (pour comprendre ce que je veux te dire):

1) avec la ligne 4 :
- selectionne (I4;I5), la plage de cellule est nommée 'PRESCRIPTION'
- insère une ligne, selectionne (I4;I6), toujours OK pour le nom de la plage

Maintenant supprime la ligne 4.

2) sans la ligne 4 :
- selectionne I4 = 'PRESCRIPTION'
- insère une ligne, selectionne (I4;I5), plus de nom, le nom concerne maintenant uniquement I5.

Hors dans la feuille 'COMPTEUR PARIS', je fais référence à ces plages de cellules et si on opte pour la seconde solution, les calculs ne concerneront qu'une seule ligne et non le tableau en entier.

J'espère avoir réussi à te faire comprendre le pourquoi de cette ligne 4.

Merci beaucoup pour ton intérêt.

A bientôt.
 

Dan

XLDnaute Barbatruc
Bonjour Natbru,

concernant ce que tu écris :

1. La macro
contrairement à ce que tu écris, la macro insère toujours une ligne complète juste avant la dernière ligne. Vérifie en cliquant sur le bouton 'nouvelle affaire' et encode quelques infos dans cette nouvelle ligne. Puis ensuite reclique sur le botuon 'nouvelle affaire' et tu verras que cette nouvelle ligne s'insère juste avant la dernière.

2. La ligne 4
De fait, ce que tu expliques est exact. Toutefois, une manière de contourner cela est de créer directement deux lignes pour commencer. A partir de ce moment tu n'as plus besoin de cette ligne vide.
Plus facile alors pour exploiter des résultats divers.

;)
 

natbru

XLDnaute Occasionnel
Bonjour DAN,

Effectiment tu as raison concernant la ligne 4, je l'ai donc supprimer.

Par rapport à l'insertion de la ligne, j'ai bien vu qu'elle s'insérait à l'avant dernière ligne du tableau mais j'aurai voulu qu'elle s'insère en dernière ligne. Cela dit, en faisant ça, le problème des noms des plages se reposerait, alors je laisse comme ça.

Je te remercie pour la Nieme fois pour tout l'aide précieuse que tu m'as donnée. Ca fait vraiment plaisir de voir comme, toi et les autres membres du forum, avez le soucis de partager vos connaissances.

Je te souhaite un trés bon réveillon et une bonne année à venir,

a trés bientôt sur le forum.

Natacha
 

Discussions similaires