Pbm ref à plage cellules d'une autre feuil avec select case

Résolu
cs_cerrone
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007
- 16 janv. 2007 à 19:18
cs_cerrone
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007
- 16 janv. 2007 à 20:13
Bonjour j'aimerai activer une macro 1 que si ma cellule A1 de la feuil1 est egale soit a B1, soit B2, soit B3 de la feuille 2  sans répeter feuil2 dans mon select case . En fait:
case is = [Feuil2!B1], [Feuil2!B2],[Feuil2!B3]
macro1   
ca marche

case is =[Feuil2!B1:B3]
macro1         
ca marche pas
J'ai tout essayer, avec cells(1, 1):cells(1, 2)    , les range(B1:B3), rien n'a marché
merci de m'aider

8 réponses

mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
16 janv. 2007 à 19:56
C'est pas un problème, tu peux simplifier avec une boucle comme celle-ci :

Private Sub Enregistre_Config()
    Dim i As Integer

For i =  1 To 456
    Select Case [Feuil1!A1]
        Case Is = Sheets("Feuil2").Cells(i, 2).Value
            Call macro1: Exit For
    End Select
Next i

End Sub


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Le Exit Fo r te fait sortir de la boucle dès que la correspondance du résultat est trouvée

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
16 janv. 2007 à 19:28
Salut,

il faut soit faire :

Select Case Sheets("Feuil1").Range("A1").Value
    Case Sheets("Feuil2").Range("B1").Value, Sheets("Feuil2").Range("B2").Value, Sheets("Feuil2").Range("B3").Value
       Call macro1
End Select

~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Ou alors :

If Sheets("Feuil1").Range("A1").Value = Sheets("Feuil2").Range("B1").Value Or _
    Sheets("Feuil1").Range("A1").Value = Sheets("Feuil2").Range("B2").Value Or _
    Sheets("Feuil1").Range("A1").Value = Sheets("Feuil2").Range("B3").Value Then
       Call macro1
End If

~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_cerrone
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007

16 janv. 2007 à 19:35
Je suis alors obligé selon toi de repeter 3x "feuil2"??
.Ma  1ere solution me semble alors plus rapide:
 case is = [Feuil2!B1], [Feuil2!B2],[Feuil2!B3]
macro1       

Encore Grand Merci Mortalino car tu m'as deja aidé ce weekend et ca m'a aidé été utile
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
16 janv. 2007 à 19:43
Effectivement, comme ceci, ça passe :

    Select Case [Feuil1!A1]
        Case Is = [Feuil2!B1], [Feuil2!B2], [Feuil2!B3]
            MsgBox "ok"
    End Select

(viens de le tester). Reste maintenant pourquoi ça ne fonctionne pas pour toi. Où as-tu mis ce code (dans quelle procédure ?)
Quand ce code doit-il être appelé ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
16 janv. 2007 à 19:45
Arf, j'avais pas vu la subtilité, désolé...
Je confirme, il ne faut pas mettre la plage de donnée, mais bien différencier les 3 valeurs (sinon, erreur incompatibilité, n°13)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_cerrone
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007

16 janv. 2007 à 19:47
non non ca marche bien mais c'est une procedure que je vais devoir repeter un grand nombre de fois car je dois faire appelle a une large plage de cellules de la feuill2 genre B1 à B 546 et je voulais la simplifier en mettant qu'une seule fois le terme feuil2, du genre
case is = feuil2B1:B456
0
cs_cerrone
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007

16 janv. 2007 à 19:53
ce qui me fait raler c'est que ca marche bien si on reste dans la meme feuille:
case is = cells(1, 2), cells (2,2)
ca marche, alors rien qu'a cause d'un lien vers une autre feuille c'est ralant
0
cs_cerrone
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007

16 janv. 2007 à 20:13
J'avais deja essayé mais mal placé le exit for.
j'y etais presque, je m'ameliore, en tout ca un grand merci encore une fois.
Bonne soirée
0