Problème select case

Résolu
Pierr0o Messages postés 18 Date d'inscription mardi 27 février 2007 Statut Membre Dernière intervention 3 avril 2007 - 3 avril 2007 à 10:37
BLUEBIBUBBLE Messages postés 116 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 10 avril 2013 - 3 avril 2007 à 15:43
Bonjour, j'ai un petit problème concernant un select case.
En fait je veux effacer des données dans chaque feuille, à des endroits précis et pas forcément les mêmes suivant les feuilles.

Voici mon code:

   Sub test()


 Dim Feuille As Object
 Dim nb As Long
 
  For Each Feuille In Worksheets
   
    Select Case Feuille.Name
   
        Case "4021"
                nb = 4
            While Cells(nb, 1).Value <> ""
                nb = nb + 1
            Wend
            Range("c4", Cells(nb, 6)).ClearContents
       
        Case "4022"
                nb = 4
            While Cells(nb, 1).Value <> ""
                nb = nb + 1
            Wend
            Range("c4", Cells(nb, 6)).ClearContents
       
        Case "4023"
                nb = 4
            While Cells(nb, 1).Value <> ""
                nb = nb + 1
            Wend
            Range("c4", Cells(nb, 5)).ClearContents
       
        Case "AVCBT"
                nb = 4
            While Cells(nb, 1).Value <> ""
                nb = nb + 1
            Wend
            Range("c4", Cells(nb, 5)).ClearContents
       
        Case "419100"
            Range("C5:E5").Select
            Selection.ClearContents
       
        Case "419CIES"
                nb = 4
            While Cells(nb, 1).Value <> ""
                nb = nb + 1
            Wend
            Range("c4", Cells(nb, 5)).ClearContents
       
        Case "4025"
                nb = 4
            While Cells(nb, 1).Value <> ""
                nb = nb + 1
            Wend
            Range("c4", Cells(nb, 5)).ClearContents
           
        Case "4026"
                nb = 4
            While Cells(nb, 1).Value <> ""
                nb = nb + 1
            Wend
            Range("c4", Cells(nb, 5)).ClearContents
                         
        Case "SAGE"
            Cells.Select
            Selection.ClearContents
           
        Case "WIN_4021"
            Cells.Select
            Selection.ClearContents
           
        Case "WIN_4022"
            Cells.Select
            Selection.ClearContents
   
    End Select
   
  Next




le problème est que quand j'exécute la macro, toute les données de la feuille disparait, y compris mon tableau, comme si j'avais fais pour chaque feuille un Selection.ClearContents.

Pouvez vous m'aider?

10 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 avril 2007 à 10:42
Essaye peut-etre en mettant un Feuille.Activate dans chaque Case avant de commencer la suppression.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
3 avril 2007 à 10:47
Salut, oui effectivement, si tu ne selectionne pas la feuille, la suppression se fera dans la feuille active au moment du case!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
3 avril 2007 à 11:04
Salut,
Un petit peu de simplification d'écriture....
Sub test()
   'Si on sait que Feuille est Worksheet
   'Pourquoi la déclarer en object?
   Dim Feuille As Worksheet
   Dim nb As Long

   For Each Feuille In Worksheets
 
       Select Case Feuille.Name
           Case "4021", "4022"
               Call Feuille.Activate
               nb = 4
               While Feuille.Range("A" & CStr(nb)).Value <> vbNullString
                   nb = nb + 1
               Wend
               Call Feuille.Range("C4", Cells(nb, 6)).ClearContents
         
           Case "4023", "AVCBT", "419CIES", "4025", "4026"
               Call Feuille.Activate
               nb = 4
               While Feuille.Range("A" & CStr(nb)).Value <> vbNullString
                   nb = nb + 1
               Wend
               Call Feuille.Range("C4", Cells(nb, 5)).ClearContents
         
           Case "419100"
               Call Feuille.Activate
               Call Feuille.Range("C5:E5").ClearContents
   
   
           Case "SAGE", "WIN_4021", "WIN_4022"
               Call Feuille.Activate
               Feuille.Cells.ClearContents
       End Select
  Next
End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
Pierr0o Messages postés 18 Date d'inscription mardi 27 février 2007 Statut Membre Dernière intervention 3 avril 2007
3 avril 2007 à 10:56
Merci à vous c'est nikel
0

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

Posez votre question
Pierr0o Messages postés 18 Date d'inscription mardi 27 février 2007 Statut Membre Dernière intervention 3 avril 2007
3 avril 2007 à 11:10
euuuuu merci pour cette simplification, mais vbNullString et CStrcorrespondent a quoi?
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
3 avril 2007 à 11:13
vbNullString = "" > chaîne de caractère vide


et Cstr > convertie en type string un nombre ou autre chose

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
3 avril 2007 à 11:14
Voir dans l'aide les convertions:

Cint, Cdbl, Csng etc...

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
BLUEBIBUBBLE Messages postés 116 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 10 avril 2013 1
3 avril 2007 à 15:29
Moi j'aime pas trop les SELECT CASE sans CASE ELSE...
...mais si on est absolument certain qu'il ne peut JAMAIS y avoir de case else, alors...
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
3 avril 2007 à 15:32
ben dans son cas ça fait rien tout simplement!

ça sert à rien de mettre

Select Case
Case 1
 [code]
Case 2
[code]
Case Else
[rien]
End Select

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
BLUEBIBUBBLE Messages postés 116 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 10 avril 2013 1
3 avril 2007 à 15:43
Tu as surement raison Drikce06, mais j'ais souvenir qu'un case else manquant faisait planter l'exe (c'était probablement sur une ancienne version VB voir QB, mais depuis je me méfie...)
0
Rejoignez-nous