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 :

Comment passer en revu toutes les feuilles d'un classeur sauf une dont le nom est connu


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Comment passer en revu toutes les feuilles d'un classeur sauf une dont le nom est connu
    Bonjour,

    voilà comme dit dans le titre je cherche à passer en revu toute les feuilles de mon classeur sauf une.
    Je m'explique: mon classeur est composé de feuille au nom variable( que je ne connaitrais pas du tout à l'avance ) et une dernière dont le nom est General.
    Ce que je souhaite donc faire c'est passer toutes les feuilles dont je ne connait pas le nom et de récupérer la valeur qui est inscrite en D3 pour en faire une moyenne et l'afficher dans la cellule D3 de la feuille General.

    Pour cela j'ai pensé au code suivant :



    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
    Sub essai()
     
    Dim a As Integer
    Dim b As Integer
     
     
     For Each Sheet In Worksheets
     Sheet.Select
     
    ' je somme la valeur de la cellule D3 de chaque feuille
     a = a + Sheet.Range("D3").Value
     
    ' J'incremente mon compteur pour savoir combien de feuille j'ai parcouru 
     b = b + 1
     
    Next Sheet
     
    'j'affiche la moyenne dans la cellule D3 de la feuille General
    Worksheets("General").Activate
     
    Range("D3").Value = a / b
     
    End Sub
    le Problème c'est qu'en faisant ça je passe en revu toutes les feuilles. Or moi j'aimerai ne pas passer en revu la feuille General, j'avais donc pensé à mettre un except General mais je ne connais pas la formulation exacte.
    Si quelqu'un pouvait me la dire.
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    tester le nom de la feuille dans le code via sa propriété Name

    Sinon peut s'effectuer aussi directement sans macro via une formule avec référence 3D
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    comme ça ?

    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
    26
    27
    28
    Sub essai()
     
    Dim a As Integer
    Dim b As Integer
     
    a = 0
    b = 0
     
     For Each sheet In Worksheets
     
     If sheet.Name = General Then
     a = a
     b = b
     
     Else
     sheet.Select
     a = a + sheet.Range("D3").Value
     b = b + 1
     
     End If
     
     Next sheet
     
    Worksheets("General").Activate
     
     Range("D3").Value = a / b
     
     End Sub
    le problème c'est que ça ne marche pas, je viens à l'instant de le tester, et si par exemple dans mon classeur j'ai 6 feuilles dont une General ( soit au total 5 feuilles différentes de General) alors si j'affiche mon b il devrait être égal à 5 et pourtant si je l'affiche il est égal à 6
    Pourriez vous me dire où je me trompe dans ce que j'ai écrit ?

    et deuxième question : comment fait on pour effacer les valeurs qui sont inscrites dans toutes les cases d'une feuille ?

    merci d'avance

    en fait je viens de trouver mon erreur
    j'avais oublié les " " à General

    cependant si je peux avoir la réponse à ma deuxième question tout de même, ce serait super aimable

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par andy05 Voir le message
    comme ça ?



    et deuxième question : comment fait on pour effacer les valeurs qui sont inscrites dans toutes les cases d'une feuille ?

    merci d'avance
    Bonjour


  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Un bon code est sans Select !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub essai()
        Dim a As Integer, b As Integer, Ws As Worksheet
     
        For Each Ws In Worksheets
            If Ws.Name <> "General" Then a = a + Ws.Range("D3").Value: b = b + 1
        Next
     
        With Worksheets("General")
            If b Then .Range("D3").Value = a / b
            .Activate
        End With
    End Sub
    Qui plus est il faut veiller à l'orthographe exact de la feuille car "General" n'est pas "Général" ni "Generale" …

    Si la feuille totalisant est toujours la dernière, il est plus simple de boucler de la première feuille à l'avant dernière …

    En étudiant une formule avec référence 3D (consulter la doc Excel), une seule ligne de code te sera nécessaire ‼


    Citation Envoyé par andy05 Voir le message
    comment fait on pour effacer les valeurs qui sont inscrites dans toutes les cases d'une feuille ?
    Voir les méthodes Cells.Clear et Cells.ClearContents

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/11/2013, 03h23
  2. [HQL] Probleme passer en revue tout les id d'une table
    Par Braksius dans le forum Hibernate
    Réponses: 12
    Dernier message: 09/08/2012, 15h44
  3. effacer toutes les feuilles d'un classeur commencant par "GRAPH"
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2007, 19h40
  4. Comment parcourir toutes les feuilles d'un classeur excel?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2007, 20h47
  5. Action sur toutes les feuilles d'un classeur
    Par beurnoir dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/12/2005, 15h11

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