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 :

Petit problème modification de cellules sur des feuilles non actives


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Par défaut Petit problème modification de cellules sur des feuilles non actives
    Bonjour à tous,

    je suis sur un projet qui avance plutôt bien, mais j'ai un soucis récurent alors je me permet de vous le poser pour essayer de trouver une solution.

    Lorsque j'active une feuille en particulier, j'appelle une fonction qui doit agir sur une AUTRE feuille (remise à zéro d'un tableau). J'insiste sur le une autre feuille car cette fonction fonctionne parfaitement si je l'appelle depuis la feuille où se trouve le tableau à remettre à zéro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub majCal(myYear As String)
        Dim tNeed As Range
     
        Set tNeed = ThisWorkbook.Sheets("BD").ListObjects("TNeed").Range
        'permier parcours rouge
    call matchOffers 'ICI l'appelle de la fonction qui me..... fatigue :p
        For rNeed = 2 To tNeed.Rows.Count
            If tNeed.Cells(rNeed, needDateCol).Value <> "" Then
                getDateCell(tNeed.Cells(rNeed, needDateCol).Value).Interior.Color = getColor("red")
            End If
        Next rNeed
        'second parcours
    End Sub
    La fonction en question
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Sub matchOffers()
        Dim tNeed, toffer As Range
        Dim tfound As Range
        Dim otherSlot As String
     
        Set tNeed = ThisWorkbook.Sheets("BD").ListObjects("TNeed").Range
        Set toffer = ThisWorkbook.Sheets("BD").ListObjects("TOffer").Range
     
        tNeed.Range(Cells(2, 9), Cells(tNeed.Rows.Count, 13)).Value = ""
     
        For rO = 2 To toffer.Rows.Count
            If toffer.Cells(rO, 7).Value <> "" Then
            'recherche le besoin
            Set tfound = tNeed.Find(toffer.Cells(rO, 7).Value)
                If tfound Is Nothing Then
                    'supprimer le lien
                    'tOffer.Cells(rO, 7).Value = ""
                Else
                    'recherche des créneaux
                    If toffer.Cells(rO, 6).Value Like "*{AM}*" Then
                        tfound.Cells(1, 9).Value = toffer.Cells(rO, 1).Value
                    End If
                    If toffer.Cells(rO, 6).Value Like "*{PM}*" Then
                        tfound.Cells(1, 10).Value = toffer.Cells(rO, 1).Value
                    End If
                    If toffer.Cells(rO, 6).Value Like "*{VDN}*" Then
                        tfound.Cells(1, 11).Value = toffer.Cells(rO, 1).Value
                    End If
                    If toffer.Cells(rO, 6).Value Like "*{NUIT}*" Then
                        tfound.Cells(1, 12).Value = toffer.Cells(rO, 1).Value
                    End If
                    'créneaux autre
                    tmp = Split(tfound.Cells(1, 6), "-")
                    If Not tmp(UBound(tmp)) Like "{*}" Then
                        otherSlot = tmp(UBound(tmp))
                        tmp = Split(toffer.Cells(rO, 6), "-")
                        If tmp(UBound(tmp)) = otherSlot Then
                            tfound.Cells(1, 13).Value = toffer.Cells(rO, 1).Value
                        End If
                    End If
                End If
            End If
        Next rO
    End Sub
    J'ai un bouton sur la feuille "BD" qui appelle cette fonction, et dans ce cas pas de pb, la fonction fait son boulot. Mais lorsque je suis sur une autre feuille => erreur de l'application, et le prog s'arrete sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tNeed.Range(Cells(2, 9), Cells(tNeed.Rows.Count, 13)).Value = ""
    Une idée ? j'ai essayé d'activer la feuille juste pour la fonction, mais 1 je ne comprend pas pourquoi je dois le faire, et 2 cela m'amène à d'autres erreurs (je pense qu'elle sont dues à la même erreur).
    J'espère avoir été assez précis, je suis autant à la recherche d'une solution, qu'à une explication de l'erreur que je ne comprend pas.

    Merci à tous et bon weekend

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    il y as une règle simple à respecter lorsque l'on utilise les objets Range, Cells, Columns... il faut TOUJOURS préciser le parent... ce n'est pas le cas pour tes Cells dans ta ligne de code..

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Par défaut Merci
    .... je suis un peu bête...
    En tout cas merci pour la réponse.

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

Discussions similaires

  1. [XL-2003] Lier deux cellules sur des feuilles différentes
    Par Olivier.p dans le forum Excel
    Réponses: 6
    Dernier message: 21/07/2009, 14h03
  2. Calcul sur des cellules sur plusieurs feuilles
    Par vlksoft dans le forum Excel
    Réponses: 2
    Dernier message: 12/03/2009, 08h08
  3. Réponses: 2
    Dernier message: 10/10/2008, 20h35
  4. [Eval] Problème de boucle for sur des tableaux
    Par battle_benny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/01/2006, 23h55
  5. Réponses: 9
    Dernier message: 17/01/2004, 10h51

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