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 :

Problème fonction offset / sum [XL-97]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant RH
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant RH
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Par défaut Problème fonction offset / sum
    Bonjour à Tous,

    J'ai un souci sur la fonction ci-dessous je suis débutant j'ai fouillé pas mal mais je n'arrive pas à trouver mon erreur.

    J'ai crée cette fonction pour l'appeler sous Excel mais j'ai un problème de valeur en retour.

    Le mois se situe dans une cellule contenant le nombre donc pas de pb, en revanche je souhaiterais définir une cellule situé par exemple 2 cas + loin horizontalement pour faire une somme de la première à cette cellule mais offset doit être utilisé que pour selection peut etre?

    La fonction somme est peut être fausse aussi?

    En vous remerciant par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function Realisation(Nb_mois As Range, Cellule1 As Range, Cellule2 As Range)
     
    Mois = Nb_mois.Value
     
    Cellule3 = Cellule2.Offset(0, Mois - 1)
     
    Cellule4 = Cellule2.Offset(0, Mois - 1)
     
    Realisation = [Sum(Cellule1:Cellule3] / [Sum(Cellule2:Cellule4)] * 100
     
    Realisation = Round(Realisation, 2)
     
    End Function

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Le plus simple c'est de mettre des espions sur tes variables et d'exécuter ta fonction au pas à pas.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant RH
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant RH
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Par défaut
    Je ne trouve pas la solution? une idée?

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Bonsoir,

    Je ne sais pas si cela fonctionne également sous Excel 97, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.worksheetfunction.sum(...
    ne résoudrait pas le problème ?

    Sinon, essaye de déclarer tes variables et de spécifier que tu parles de la valeur de la cellule... par exemple Cellule2.Offset(0, Mois - 1).Value

    Ah mais attends, quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cellule3 = Cellule2.Offset(0, Mois - 1)
    tu veux pas récupérer la valeur mais affecter l'objet (cellule) ?

    dans ce cas-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Cellule3 = Cellule2.Offset(0, Mois - 1)
    Variable = range... affecte à la Variable la valeur de la range (ou le texte, si c'en est)...
    Set Variable = range... affecte l'objet à la variable, tu peux donc après "jouer" avec les propriétés du type Variable.Interior.Color, Variable.Offset(x,y), etc.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Assistant RH
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant RH
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Par défaut
    Ca ne me résoud pas mon problème car j'ai besoin des cellules pour faire ma somme...

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Ceci fonctionne chez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set cellule3 = Cellule2.Offset(0, Mois - 1)
     
    Set cellule4 = Cellule2.Offset(0, Mois - 1)
    Debug.Print cellule3.Address
    'Pourquoi Cellule4 et Cellule3 sont les mêmes ? Erreur de frappe ?
     
    Realisation = WorksheetFunction.Sum(Range(Cellule1, cellule3)) / WorksheetFunction.Sum(Range(Cellule2, cellule4)) * 100
    Honnêtement, je n'ai jamais utilisé les crochets ainsi... Mais c'est probable que ce soit juste par ignorance !

    J'utilise toujours Worksheetfunction.FONCTIONENANGLAIS... Le seul moment où j'utilise parfois le crochet est pour désigner une Range, mais c'est tout...

  7. #7
    Membre à l'essai
    Homme Profil pro
    Assistant RH
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant RH
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Par défaut
    Citation Envoyé par Quentin77170 Voir le message
    Ah mais attends, quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cellule3 = Cellule2.Offset(0, Mois - 1)
    tu veux pas récupérer la valeur mais affecter l'objet (cellule) ?

    dans ce cas-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Cellule3 = Cellule2.Offset(0, Mois - 1)
    Variable = range... affecte à la Variable la valeur de la range (ou le texte, si c'en est)...
    Set Variable = range... affecte l'objet à la variable, tu peux donc après "jouer" avec les propriétés du type Variable.Interior.Color, Variable.Offset(x,y), etc.
    Nikel le "set" marche pour utiliser offset me manque la somme je dois avoir un souci de syntaxe je n'arrive pas à sommer les cellules...

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Realisation(Nb_mois As Range, Cellule1 As Range, Cellule2 As Range)
     
    Realisation = Round(100 * Application.WorksheetFunction.Sum(Range(Cellule1, Cellule2.Offset(0, Nb_mois.Value - 1))) / _
                              Application.WorksheetFunction.Sum(Range(Cellule2, Cellule2.Offset(0, Nb_mois.Value - 1))), 2)
     
    End Function

  9. #9
    Membre à l'essai
    Homme Profil pro
    Assistant RH
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Assistant RH
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Par défaut
    Merci cela marche super bien vos 2 réponses je bloquais sur Application.WorksheetFunction.Sum(Range(Cellule1, Cellule3)).

    Il fallait virgule après la Cellule1 et non ":" .

    Merci à tous pour votre aide.


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

Discussions similaires

  1. Problème fonction SDL
    Par seeme dans le forum SDL
    Réponses: 2
    Dernier message: 06/11/2005, 20h22
  2. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  3. SQL, problème de Montant (SUM) multiplié
    Par ronando dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/10/2005, 15h48
  4. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  5. Réponses: 2
    Dernier message: 20/08/2004, 17h10

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