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 :

pb avec référence activecell [XL-2000]


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
    profession libérale
    Inscrit en
    Octobre 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2011
    Messages : 49
    Par défaut pb avec référence activecell
    Bonsoir,
    voici une fonction de comptage de cellules qui pemet de compter des cellules d'une zone donnée en fonction de la couleur donnée par BgColor1 et de la valeur d'une cellule dont on détemine l'emplacement en comptant le nombre de colonnes qui sépare la cellule dans laquelle on va placer la fonction et une autre cellule ;
    le problème, c'est qu'avec activecell, j'ai une formule qui fonctionne uniquement si je suis placé sur la case de la formule. La 2ème formule donne la solution : il faut créer une variable range en plus.
    La question est de savoir s'il y a moyen de référencer la cellule dans laquelle on place la fonction sans avoir à créer une variable pour cela.
    NB: il y a plus de détail sur une question nommée Pb avec offset qui m'avait permis de finir cette formule, mais a soulevé ce pb.
    Merci d'avance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'compte cellules avec une couleur de fond en fonction du jour de la semaine : cette formule fonctionne
    Function ColorCountFctJSemAuto(SearchArea As Object, BgColor1 As Range, NJour As Range, Jsem As Integer) As Integer
    Application.Volatile True
    ColorCountFctJSemAuto = 0
    MaCoul1 = BgColor1.Interior.ColorIndex
    For Each cell In SearchArea
         If cell.Interior.ColorIndex = MaCoul1 And cell.Offset(0, (NJour.Column - ActiveCell.Column)).Value = Jsem Then ColorCountFctJSemAuto = ColorCountFctJSemAuto + 1
    Next cell
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'compte cellules avec une couleur de fond en fonction du jour de la semaine : cette formule fonctionne
    Function ColorCountFctJSemAuto(SearchArea As Object, BgColor1 As Range, NJour As Range, CasFct as Range, Jsem As Integer) As Integer
    Application.Volatile True
    ColorCountFctJSemAuto = 0
    MaCoul1 = BgColor1.Interior.ColorIndex
    For Each cell In SearchArea
         If cell.Interior.ColorIndex = MaCoul1 And cell.Offset(0, (NJour.Column - CasFct.Column)).Value = Jsem Then ColorCountFctJSemAuto = ColorCountFctJSemAuto + 1
    Next cell
    End Function

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 126
    Par défaut
    Salut

    Oui c'est possible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Essai()
    Dim TheCell As Range
    Set TheCell = Application.Caller
     
    Essai = TheCell.Column
    End Function
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre averti
    Homme Profil pro
    profession libérale
    Inscrit en
    Octobre 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2011
    Messages : 49
    Par défaut
    Merci pour l'info,
    mais quand on inclus la formule dans la fonction, ça pose un problème de référence circulaire et ça ne fonctionne pas (de même, si on ajoute la fonction essai() dans le module de la feuille excel et qu'on utilise cette fonction dans la fonction initilale, on a encore un pb de référence circulaire).
    Donc, à moins de contourner ce pb, le mieux reste de créer un paramètre supplémentaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'compte cellules avec une couleur de fond en fonction du jour de la semaine
    Function ColorCountFctJSemAuto(SearchArea As Object, BgColor1 As Range, NJour As Range, Jsem As Integer) As Integer
    Dim TheCell As Range
    Set TheCell = Application.Caller
    Application.Volatile True
    CaseFct = Application.Caller
    ColorCountFctJSemAuto = 0
    MaCoul1 = BgColor1.Interior.ColorIndex
    For Each Cell In SearchArea
         If Cell.Interior.ColorIndex = MaCoul1 And Cell.Offset(0, (NJour.Column - TheCell.Column)).Value = Jsem Then ColorCountFctJSemAuto = ColorCountFctJSemAuto + 1
    Next Cell
    End Function

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 126
    Par défaut
    Salut
    Une ref circulaire?? à quel endroit?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function ColorCountFctJSemAuto(SearchArea As Range, BgColor1 As Range, NJour As Range, Jsem As Integer) As Integer
    Dim TheCell As Range, Cell As Range
    Dim MaCoul1 As Long
    Set TheCell = Application.Caller
    Application.Volatile True
    'CaseFct = Application.Caller
    ColorCountFctJSemAuto = 0
    MaCoul1 = BgColor1.Interior.ColorIndex
    For Each Cell In SearchArea
         If Cell.Interior.ColorIndex = MaCoul1 And Cell.Offset(0, (NJour.Column - TheCell.Column)).Value = Jsem Then ColorCountFctJSemAuto = ColorCountFctJSemAuto + 1
    Next Cell
    End Function
    Mise a part les déclarations qui manquent et le CaseFct = Application.Caller qui est inutile, je ne vois pas de soucis avec ton code, il fonctionne parfaitement chez moi.

    Si le problème persiste fait nous passer un fichier démo.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre averti
    Homme Profil pro
    profession libérale
    Inscrit en
    Octobre 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : profession libérale
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2011
    Messages : 49
    Par défaut résolu
    Merci Qwazerty,
    ça fonctionne.

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 01/02/2008, 17h14
  2. SQL avec référence à un form
    Par Bombar dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/11/2007, 14h31
  3. [VBA-Version]Probleme avec références VB
    Par macgiver dans le forum VBA Access
    Réponses: 3
    Dernier message: 31/03/2007, 00h19
  4. [DOM] Transformer : encodage avec référence numérique
    Par tdaubign dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 01/09/2006, 10h26

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