Pbm ref à plage cellules d'une autre feuil avec select case [Résolu]

Signaler
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007
-
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007

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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007

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
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007

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
Messages postés
14
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 janvier 2007

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