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 :

Fonction utilisant une autre feuille [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 55
    Par défaut Fonction utilisant une autre feuille
    Bonjour,

    Le post que voici est le seul que j'aie trouvé mettant le doigt sur mon problème. J'ai appliqué l'idée de tangjuncn, mais ça ne fonctionne toujours pas.

    Sur la feuille "Occupations" j'ai un planning à parcourir ligne par ligne (nb variables de lignes, colonnes fixes).
    Sur la feuille "Chantiers", j'aimerais insérer des calculs style RECHERCHE().

    Vu que je dois combiner RECHERCHE(), SI(), SOMME() et planning dynamique, le VBA me paraît plus efficace.

    Dans un module, je place le code d'un bouton situé sur la feuille "Chantiers" (là où les valeurs calculées doivent apparaître):
    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 BtnMAJNbHommes_Clic()
    Dim No As Integer
    Dim Cat As String
    Dim MaPlage As Range
    Dim Cellule As Range
     
    Set MaPlage = Worksheets("Chantiers").Range("F2:J52")
     
    For Each Cellule In MaPlage
        No = Cells(Cellule.Row, 1)
        Cat = Cells(1, Cellule.Column)
        Cellule.Value = NbOuvriersDansCatParChantier(No, Cat)
    Next Cellule
     
    End Sub
    Dans un autre module, je précise la fonction utilisée plus haut:
    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
    Function NbOuvriersDansCatParChantier(NoChantier As Integer, Categorie As String) As Integer
     
    Dim compterOuvriers As Integer
    Dim i As Integer
    Dim cell As Range
    Dim LigneOuvrier As Range
    compterOuvriers = 0
    Set LigneOuvrier = Nothing
     
    For i = 3 To 40
        Set LigneOuvrier = Worksheets("Occupations").Range(Cells(i, 1), Cells(i, 370))
        If LigneOuvrier(1, 1).Value = "x" And LigneOuvrier(1, 2) = Categorie Then
            For Each cell In LigneOuvrier.Cells
                If cell.Value = NoChantier Then
                compterOuvriers = 1 + compterOuvriers
                End If
            Next cell
        End If
        Set LigneOuvrier = Nothing
    Next i
     
    NbOuvriersDansCatParChantier = compterOuvriers
     
    End Function
    La fonction NbOuvriersDansCatParChantier fonctionne très bien dans la feuille "Occupations", mais pas dans les autres feuilles, même en prenant des constantes comme arguments plutôt que des références de cellules.

    Où est mon erreur ?

    Merci d'avance de votre aide.

    PS: Excel 2007

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Peut être en modifiant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Worksheets("Occupations").
    Car ca te fait travailler uniquement sur la feuille "Occupation"


    Par contre évite d'exhumer une discutions qui date de 2007, j'ai bien failli me taper les premiers messages qui ne corresponde pas a ton problème.
    La prochaine fois créé une nouvelle discutions

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 55
    Par défaut Fonction faisant intervenir plusieurs feuilles
    Merci Krovax pour ta réponse.
    Ben je pense que le fond du problème était le même que celui d'Evariste, mais il est vrai que le réflexe est de lire le code par exemple dès le début, donc j'y veillerai la prochaine fois.

    J'ai partiellement résolu le problème en changeant la dernière boucle, comme tu le conseillais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 3 To 40
        If Sheets("Occupations").Cells(i, 1).Value = "x" And Sheets("Occupations").Cells(i, 2) = Categorie Then
            For Each cell In Range(Sheets("Occupations").Cells(i, 1), Sheets("Occupations").Cells(i, 370))
                If cell.Value = NoChantier Then
                compterOuvriers = 1 + compterOuvriers
                End If
            Next cell
        End If
        Set LigneOuvrier = Nothing
    Next i
    Ca fonctionne, mais c'est très lent (utilisation des 2 processeurs etc), mais ça, c'est un autre problème.

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

Discussions similaires

  1. appel de fonctions dans une autre feuille
    Par arkhamon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/02/2012, 14h04
  2. appel de fonctions dans une autre feuille
    Par arkhamon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/02/2012, 13h17
  3. Récupérer la valeur d'une cellule avec fonction sur une autre feuille
    Par rogerlette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/09/2010, 12h38
  4. [VBA-E] Comment faire une fonction utilsant une autre feuille
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/04/2007, 16h27
  5. appel d'une fonction dans une autre feuille
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/04/2007, 17h51

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