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 :

signe des données copie vers onglet [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Par défaut signe des données copie vers onglet
    Bonsoir

    J'ai besoin de votre aide pour corriger une macro.

    Je pars d'une balance comptable comportant des montants en positif et des montant en négatif, qui doivent être recopier dans des onglets de destination selon une table d'affectation.

    Elle fonctionne correctement sauf qu'elle me renvoie des montant négatif, alors que pour un but de présentation je les voudrais en valeur absolue uniquement pour certain compte.


    voici mon code
    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
    Private Sub Fill()
    Dim r As Range
    Dim NbLignesBalance As Long
    Dim NbLignesConfig As Long
    Dim ListePlageComptes As New objListePlageDeComptes
    Dim PlageCompte As objPlageDeComptes
    Dim value As Double
    Dim SommeProd As Variant
     
     
      NbLignesBalance = frmBalance.[A1].CurrentRegion.Rows.Count
      NbLignesConfig = frmConfig.[A1].CurrentRegion.Rows.Count
     
      On Error Resume Next
      For Each r In frmConfig.Range("A2:A" & NbLignesConfig)
        ListePlageComptes.Clear
        ListePlageComptes.Init (r.Offset(0, 2).value)
        value = 0
        For Each PlageCompte In ListePlageComptes.Liste
     
          SommeProd = Evaluate(PlageCompte.Signe & "SUMPRODUCT((Balance!G2:G" & NbLignesBalance & ">=" & PlageCompte.Debut & ")*(Balance!G2:G" & NbLignesBalance & "<=" & PlageCompte.Fin & ")*Balance!E2:E" & NbLignesBalance & ")")
     
          SommeProd = Evaluate("SUMPRODUCT((Balance!G2:G" & NbLignesBalance & ">=" & PlageCompte.Debut & ")*(Balance!G2:G" & NbLignesBalance & "<=" & PlageCompte.Fin & ")*Balance!E2:E" & NbLignesBalance & ")")
          If IsNumeric(SommeProd) Then value = value + SommeProd
     
        Next PlageCompte
        ThisWorkbook.Worksheets(r.value).Range(r.Offset(0, 1).value) = value
     
      Next r
      On Error GoTo 0
    End Sub
    Merci de votre aide
    Christian

  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
    Bonjour
    La fonction abs devrait t'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets(r.value).Range(r.Offset(0, 1).value) = Abs(value)
    Ca devrait suffire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Par défaut
    Merci bien

    Oui en retournant la valeur absolue,
    mais je voudrais retourner la valeur absolue que pour certain compte.

    exemple
    PlageCompte Value -> valeur attendue
    101000 50 000 50 000
    476000 - 1 000 1 000
    477000 - 5 000 - 5 000

    La solution qui avait été envisagée c'est de mettre dans le plan de compte, un signe distinctif un '-' devant le numéro de compte pour lequel je veux retourner la valeur absolue.
    donc dans l'exemple -476000 retourne 1 000 et 477000 retourne - 5000


    D'ailleurs dans la macro que j'ai repris, il me semble que l'on avait tenté d'y répondre avec PlageCompte.Signe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SommeProd = Evaluate(PlageCompte.Signe & "SUMPRODUCT((Balance!G2:G" & NbLignesBalance & ">=" & PlageCompte.Debut & ")*(Balance!G2:G" & NbLignesBalance & "<=" & PlageCompte.Fin & ")*Balance!E2:E" & NbLignesBalance & ")")
        
    SommeProd = Evaluate("SUMPRODUCT((Balance!G2:G" & NbLignesBalance & ">=" & PlageCompte.Debut & ")*(Balance!G2:G" & NbLignesBalance & "<=" & PlageCompte.Fin & ")*Balance!E2:E" & NbLignesBalance & ")")



    ou autre solution bien venue

    Merci
    Christian

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Par défaut
    Bonjour


    Je pense m'en sortir avec une condition if ou simplement avec si voir si(ou.

    C'est une macro, que je reprends qui est sensée fonctionner, une chose que je ne comprends pas.

    Les 2 lignes de calcul sont les mêmes sauf dans la première j'ai

    plagecompte.signe

    Je ne comprends pas .signe qu'est que l'auteur cherchait à faire ?
    je vois parfois variable.quelques chose pourquoi ?


    MErci de vos lumières pour m'éclairer
    Christian

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par crissud Voir le message
    je vois parfois variable.quelques chose pourquoi ?
    2 possiblités:
    • Soit il existe une classe dont une des Propriétés est "quelque chose" et dont on a créé une instance "variable".
    • Soit il existe un Type défini par l'utilisateur "variable" dont un des éléments est "quelque chose".
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Par défaut
    Merci bien AlainTech


    J'en profite bonne année 2011

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

Discussions similaires

  1. Importer des données Excel vers BD Access
    Par technopole dans le forum Access
    Réponses: 1
    Dernier message: 03/07/2006, 14h37
  2. exporter des données access vers excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 8
    Dernier message: 20/06/2006, 23h29
  3. Envoyer des données mysql vers Excel
    Par thierry198 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/11/2005, 19h59
  4. Importer des données excel vers outlook
    Par faayy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/10/2005, 09h30
  5. Récupérer des données Excel vers Interbase ...
    Par Djedjeridoo dans le forum InterBase
    Réponses: 2
    Dernier message: 20/07/2003, 18h16

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