IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sélection de plusieurs feuilles en VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Sélection de plusieurs feuilles en VBA
    Bonjour,

    Je suis débutant en VBA alors j'ai un-peu de mal.

    Je vous explique mon problème.

    Je veux selon ce qui est marqué dans certaines cellules sélectionnées les feuilles correspondantes.

    exemple : Si a1=1,a2=0, et a3=1 alors je sélectionne seulement les feuilles 1 et 3 et pas la 2.

    Voici le début de mon code, mais ça ne fait pas ce que je veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub selection()
     
           If Range("b1") = 1 Then
           Sheets(Array("1")).Select
           End If
     
           If Range("b2") = 1 Then
           Sheets(Array("2")).Select
           End If
     
           If Range("b3") = 1 Then
           Sheets(Array("3")).Select
           End If
     
    End Sub

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour à tou(te)s, airji

    le code n'est pas bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Range("b1") = 1 Then
        Sheets(Array("1")).Select
    End If
    si la feuille se nomme "1", il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Range("b1") = 1 Then
        Sheets("1").Select
    End If
    si le numéro de feuille est 1 il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Range("b1") = 1 Then
    Sheets(1).Select
    End If
    mais tu ne selectionneras pas toutes les feuilles concernées en meme temps

    autre solution, exemple de syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ..... then
    Sheets(Array("Feuil1", "Feuil3")).Select
    end if
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    Voici un petit bout de code pour construire le tableau de sélection des onglets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub selection()
    Dim tabFeuil() As String
    Dim intPos As Integer
    Dim intMax As Integer
     
        intMax = 0
     
        For intPos = 1 To 3
            If Range("b" & intPos) = 1 Then
                ReDim Preserve tabFeuil(intMax)
                tabFeuil(intMax) = Format(intPos)
                intMax = intMax + 1
            End If
        Next intPos
     
        If intMax > 0 Then
            Sheets(tabFeuil).Select
        End If
     
    End Sub
    Attention, dans le code tu inspectes la colonne B et pas la colonne A comme dans tes explications, j'ai gardé la cohérence avec ton code et fait les tests sur la colonne B.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Quand je met le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub selection()
    Dim tabFeuil() As String
    Dim intPos As Integer
    Dim intMax As Integer
     
        intMax = 0
     
        For intPos = 1 To 3
            If Range("b" & intPos) = 1 Then
                ReDim Preserve tabFeuil(intMax)
                tabFeuil(intMax) = Format(intPos)
                intMax = intMax + 1
            End If
        Next i
     
        If intMax > 0 Then
            Sheets(tabFeuil).Select
        End If
     
    End Sub
    Il me marque erreur de compilation, référence de variable de contrôle incorrecte dans Next

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    normal,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For intPos = 1 To 3
    ...Next i
    il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For intPos = 1 To 3
    ...
    Next intpos
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ok merci ça fonctionne SUPER:

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    je viens de voir une autre solution à étudier, en plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Aff_Feuilles()
    Dim Feuille As Worksheet
    For Each Feuille In ActiveWorkbook.Sheets
            If Sheets("feuil1").Range("b" & Feuille.Index) = 1 Then Feuille.Select Replace:=False
    Next Feuille
    Bonne fin de journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtrer sur plusieurs feuilles avec VBA
    Par Tikalins dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/07/2015, 09h48
  2. [XL-2007] Sélection dans plusieurs feuilles
    Par CJack's dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/05/2013, 14h09
  3. [XL-2010] Extraire plusieurs feuilles en VBA
    Par haydens dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/05/2012, 09h24
  4. [XL-2007] Sélection de plusieurs feuilles contigües
    Par formabox dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2012, 14h06
  5. [EXCEL] sélection de plusieurs feuilles par code
    Par CCRNP dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/03/2006, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo