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 :

Utiliser variable pour Sheet(XX).activate ? [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 15
    Par défaut Utiliser variable pour Sheet(XX).activate ?
    Bonjour à tous
    Je voudrais activer chacun des onglets de mon classeur et effectuer un traitement.

    Mon code est celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    nbrOnglet = Worksheets.Count
    ReDim NomsOnglet(1 To nbrOnglet)  ' Redimensionnement tableau des noms d'onglets
    For i = 1 To nbrOnglet    ' Boucle pour remplir tableau avec noms d'onglets
        NomsOnglet(i) = Worksheets(i).Name
    Next i
     
    For i = 2 To nbrOnglet    ' Pour chaque onglet ...
        Sheet(NomsOnglet(i)).Activate    ' ... activer l'onglet et ...
        Call Traiment_A_Effectuer    ' ... lui faire effectuer un traitement
    Next i
    Mais la ligne Sheet(NomsOnglet(i)).Activate ne fonctionne pas.
    J'ai essayé avec Sheet( & NomsOnglet(i) ).Activate mais Excel colorie la ligne en rouge.

    Auriez-vous une idée ?

    Merci d'avance
    Cordialement

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Pour boucler sur tous les onglets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
       sh.select
       ... Traitement
    Next sh

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 15
    Par défaut
    Bonjour jfontaine. Toujours aussi prompt à répondre

    J’obtiens, sur la ligne sh.Select l'erreur
    Erreur d'éxecution '1004'
    La méthode 'Select' de l'objet '_Worksheet' a échoué
    Voici le code complet de mon projet :
    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
    21
    22
    23
    24
    25
    Sub Colorier_Cellule()
    Dim sh As Worksheet
    Dim last_Ligne_Chaine As Long
     
    For Each sh In ThisWorkbook.Worksheets
       sh.Select
     
        last_Ligne_Chaine = Cells.SpecialCells(xlCellTypeLastCell).Row - 2   ' -2 car décalage données recopiées
        Range("A" & last_Ligne_Chaine, "X" & last_Ligne_Chaine).Interior.ColorIndex = xlNone    ' raz fond
     
        For iColonne = 2 To 24  ' 2 car pas de traitement sur la 1°
     
            If Cells(last_Ligne_Chaine, iColonne).Value > 800 Then
                Cells(last_Ligne_Chaine, iColonne).Interior.Color = RGB(255, 0, 0) ' rouge
            Else
                If Cells(last_Ligne_Chaine, iColonne).Value > 600 Then
                    Cells(last_Ligne_Chaine, iColonne).Interior.Color = RGB(255, 100, 0)   ' orange
                End If  ' >600
            End If  ' >800
     
        Next iColonne
     
    Next sh
    MsgBox "fin de la macro Colorier_Cellule"
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 15
    Par défaut
    J'ai trouvé comment faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Colorier_Cellules()
    Dim Nbr_Onglets As Integer
     
    Nbr_Onglets = Worksheets.Count    ' nombre d'onglet total
     
    For iOnglet = 2 To Nbr_Onglets    ' Je zappe le 1° onglet
     
        Worksheets(iOnglet).Activate
        ' traitement à effectuer
     
    Next iOnglet
     
    End Sub

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

Discussions similaires

  1. [Débutant] utiliser variable pour le nom de colonne d'une procedure rowfilter
    Par Ashireon dans le forum VB.NET
    Réponses: 1
    Dernier message: 28/09/2012, 13h32
  2. utilisation variable pour une méthode
    Par robert_trudel dans le forum iReport
    Réponses: 2
    Dernier message: 31/08/2009, 21h20
  3. Utiliser une variable pour stocker les noms d'objets.
    Par en_gel_ho dans le forum Access
    Réponses: 4
    Dernier message: 03/01/2007, 16h44
  4. Réponses: 7
    Dernier message: 07/09/2004, 14h16
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58

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