pb macro

S

steve

Guest
bonsoir a tous

le code ne fonctione pas
quant la date =2001 ou =2002

merci d' avance


Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Name = [e4]
If Target.Address = "$H$16" Or Target.Address = "$H$17" Or Target.Address = "$H$19" Or Target.Address = "$H$18" Or Target.Address = "$N$20" Or Target.Address = "$N$19" Or Target.Address = "$N$18" Or Target.Address = "$N$17" Or Target.Address = "$N$16" Then
Range("Ad9:As9").Copy
Worksheets("Accueil BILAN").Range("V9").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End If

Dim Isect As Range
Set Isect = Application.Intersect(Range("a8"), Target)
If Isect Is Nothing Then Exit Sub
Select Case Target.Value
Case "franck"
Call franck


Set Isect = Application.Intersect(Range("i2"), Target)
If Isect Is Nothing Then Exit Sub
Select Case Target.Value
Case ">2001<"
Call 2001
Case ">2002<"
Call 2002
End Select

End Sub
 
@

@+Thierry

Guest
Salut Steve,

Humm je ne comprends pas tes deux case ">2001<" et ">2002<" ?

ensuite les call 2001 et 2002 ? tu as des macros nommées comme celà ?

Moi je verrai plutôt...
Select Case Target.Value
Case 2001
Call macro2001
Case 2002
Call macro2002
End Select

Ceci bien entendu sans tester quoique ce soit, mais juste en pûre syntax... Surtout pour le coup de "<2001>" ? car là tu cherches quoi comme valeur ?
car à mon sens il faudrait que tu aies exactement cette string dans ta target.value...

...à suivre...
Bonne nuit
@+Thierry
 
T

Ti

Guest
je reconnais du code que j'ai dû écrire là-dedans, mais ça n'a plus aucun sens. Si tu mets plusieurs fois le test
If Isect Is Nothing Then Exit Sub

seul le premier signifie quelque chose, et si tu le passes, les autres t'éjecteront à tous les coups. Essaie d'être un peu plus logique dans ce que tu programmes
 
@

@+Thierry

Guest
Hello Pat5 hi hi hi !!! Bonnes Fêtes à toi aussi


Pour Steve au fait le End Select c'est normal vu que tu as coupé le Select Case... après "Franck".... en fait tu as deux Select Case... Tu mets un peu la panique dans VBA là !! lol

A mon avis reprends ton code calmement en suivant les conseils de Ti...

Bonne nuit
@+Thierry
 
S

steve

Guest
bonjour

il etait temps que j'aille me coucher hier soir vu comment je confondais tous le monde
mais comment faire pour avoir deux select case???? ,dans le meme code ou dans la meme feuille,peut on avoir deux worksheet change.

merci d'avance ti et thierry,et toi aussi pat5.
 
S

steve

Guest
voila;

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Name = [e4]
If Target.Address = "$H$16" Or Target.Address = "$H$17" Or Target.Address = "$H$19" Or Target.Address = "$H$18" Or Target.Address = "$N$20" Or Target.Address = "$N$19" Or Target.Address = "$N$18" Or Target.Address = "$N$17" Or Target.Address = "$N$16" Then
Range("Ad9:As9").Copy
Worksheets("Accueil BILAN").Range("V9").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End If

Dim Isect As Range
Set Isect = Application.Intersect(Range("a8"), Target)
If Isect Is Nothing Then Exit Sub
Select Case Target.Value
Case "franck"
Call franck
End Select



Set Isect = Application.Intersect(Range("m2"), Target)
If Isect Is Nothing Then Exit Sub
Select Case Target.Value
Case "2001"
Call 2001

End Select

End Sub



le deuxième select case ne fonctionne pas



merci d' avance thierry
 
@

@+Thierry

Guest
Re Steve, vite fait du bureau

C'est pas mes If !!! ce sont les tiens !!

Mais d'ailleurs ...

SI tu ne suis même pas les conseils que l'on te donne ENSUITE
tu ne progresseras vraiment pas vite en VBA
AUTREMENT ce n'est pas en en copiant/collant des codes bout à bout puis en s'exclamant "çà ne marche pas" que tu progresseras aussi...
FIN DE SI

Dans mon post d'hier soir je t'ai pourtant expliqué un truc :
"Call 2001 et 2002 tu as des macro nommées comme celà ?"
puis dans mon exemple, si tu avais fait attention je les nomme
Call Macro2001 / Macro2002... (faut qu'elles soient bien sûr existantes et nommées tel quel !)

Mais aujourd'hui je vois ce que tu n'as rien changé... et il semble bien que tu n'as pas vraiment même essayé de comprendre.

Tu ne peux nommer des macro avec des chiffres, tu dois avoir ton débugeur dans le module VBA qui doit se mettre en rouge sur la ligne dès que tu tapes çà... !

Donc déjà c'est là que çà plante. (entre autre !)

Ensuite le Case Select est utile pour définir des cas sur une variété de possibilités plutôt que de faire un cascade de IF... Mais si tu n'as qu'un choix un IF est parfait.

D'ailleurs tu as déjà des IF dans ton propre code, il faut essayer de comprendre ce que tu écris Steve, sinon dans 15 mois tu seras toujours au même niveau qu'à 15 jours.

Par Exemple au lieu de :
If Isect Is Nothing Then Exit Sub

Tu pourrais avoir un message :

If Isect Is Nothing Then
MsgBox "Il n'y a pas d'intersection entre les deux cellules"
Exit Sub
End If

Voilà, je pense que tu devrais être plus patient en tous les cas... Les "çà ne marche pas" ne feront pas marcher ta macro... Mais la patience oui...
Imagines-tu combien de messages du Debugeur nous avons durant chaque dévelopement pour des gens comme Ti ou moi (sûrement plus moi !! lol) ce n'est pas pour çà que nous baissons les bras... on essaie de comprendre de reprendre à zéro etc... Si çà plante c'est que c'est nous qui avons merdé quelque part, et il faut tranquilement trouver... Ptet que tu t'attaques à une macro un peu élevée pour un niveau débutant, commence par des trucs plus simples... C'est un conseil sinon tu risque d'être vite découragé...

Tu as du pain sur la planche Steve.
Reprends calmement tout ce code...
Renomme tes macros 2001 et 2002 en M2001 et M2002 (si çà te plait)
et change déjà le call 2001 en call M2001

et dis nous ce qui plante encore...
On verra ce que l'on peut faire

@+Thierry
 

Discussions similaires

Réponses
1
Affichages
234

Membres actuellement en ligne

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 870
dernier inscrit
Armisa