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 sur la fonction IF


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Par défaut Problème sur la fonction IF
    Bonjour,

    Je cherche à développer une balance comptable consolidée sur Excel, grâce à l'onglet "Données / Consolider...".

    Le seul problème étant que je peux lier les données consolidées aux données sources, mais je ne peux pas intégrer de nouvelles données (écritures).

    j'ai donc opté pour une macro permettant de "refaire" la balance consolidée après l'ajout d'écritures.

    Voici les colonnes de ma balance consolidée une fois la consolidation réussie :

    N° compte - Débit - Crédit

    Je veux donc constituer une macro me permettant, une fois cette balance faite (je l'ai déja programmé en macro), de rajouter une colonne Solde (calculé Débit-Crédit) et d'intégrer des conditions pour réaliser la mise en forme

    Je veux en fait ajouter la formule "=Débit-Crédit" dans la colonne Solde, mais uniquement pour les lignes incorporant un numéro de compte dans la colonne N° Compte.

    Voici donc ma question :

    Comment faire pour intégrer la condition suivante : SI il y a une valeur ds la colonne 'N° compte' ALORS remplir la ligne correspondante en jaune et intégrer la formule "=DX-EX" dans la colonne Solde, toujours de la ligne correspondante.

    X étant le numéro de la ligne correspondante

    Je vous remercie d'avance pour votre aide.

  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
    faut commencer par parcourir ta colonne et tester chaque ligne si j'ai bien compris?
    Essaye ca
    (je l'ai tapé directement vérifie qu'il ny ai pas d'erreure de frappe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    dim i as long, DerniereLigne  as long
    dim colcompte as integer
    dim colsolde as integer
     
    colcompte=3 'ton numéro de colonne n° de compte
    colsolde=5 'ton numéro de colonne de solde
    DerniereLigne = Range("D65536").End(xlUp).Row ' remplace le D par une colonne qui est remplie jusqu'a la dernière ligne je pense que D doit aller
    for i= 2 to DerniereLigne 
       if cells(i,colcompte)<>"" then
          cells(i,colcompte).entirerow.Interior.ColorIndex=6
          cells(i,colcompte).formula= "=D" & i & "-" & "E" & i
       endif
    next i

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Par défaut
    Merci Krovax !

    J'ai remplacé où il fallait et c'est bon.

    Tu m'as donné une base pour travailler. Maintenant je vais l'améliorer car en fait je ne veux pas que la couleur se prolonge sur toute la ligne, mais juste sur le début de la ligne qui correspond aux colonnes de mon tableau.

    Je vais étudier ça de mon côté.
    Mais si tu connais bien le code, un coup de main supplémentaire ne serait pas de refus !!

    Merci encore de ton aide !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Par défaut
    if cells(i,colcompte)<>"" then
    cells(i,colcompte).entirerow.Interior.ColorIndex=6
    cells(i,colcompte).formula= "=D" & i & "-" & "E" & i
    endif
    next i
    Dans ce code VBA, l'EntireRow permet en fait de remplir en jaune l'ensemble de la ligne alors qu'en fait je veux remplir uniquement les colonnes A, B, C, D, E et F de la ligne.

    J'ai cherché le code mais, après plusieurs tests, Excel me refuse tous mes tests.

    Merci d'avance pour votre aide

  5. #5
    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
    en gros pour la ligne 15 tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A15:F15").Interior.ColorIndex=6
    A15:F15 est une chaine de caractère puisque entouré de " "
    par concéquent tu peux le manipuler comme tel.
    & permet de "coller" des chaine de caractère
    affiche A15
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i=15
    msgbox "A" & i & ":F" & i
    affiche A15:F15

    tu peux donc faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    range("A" & i & ":F" & i).Interior.ColorIndex=6

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Par défaut
    C'est bon ta solution était la bonne.

    j'avais essayé une technique dans le même genre, mais la syntaxe était inexacte.

    Il me reste plus qu'un problème du coup.

    Pour la mise en forme, j'ai envie d'encadrer ma balance, mais le truc c'est qu'à chaque fois que j'exécute la macro qui construit la balance, le nombre de lignes n'est pas exactement le même.

    Donc comment programmer en VBA pour que la sélection prenne uniquement les lignes contenant un numéro de compte dans la colonne "N° compte"

  7. #7
    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
    Je te laisse regarder ctte contribution d'Ouskel'n'or

    Dernière ligne et la dernière colonne renseignées d'une feuille

    J'utilise principalement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DerniereLigne = Range("A65536").End(xlUp).Row
    en remplaçant A par ta colonne

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 55
    Par défaut
    Je saisis bien Krovax. Merci de ton aide.

    Le truc c'est qu'au lieu de faire une sélection "classique" du genre :

    Je voudrais plutot ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:A" DerniereLigne = Range("A65536").End(xlUp).Row"").Select
    Mai je ne sais pas comment programmer cela.

    j'ai essayer en la déclarant comme variable, mais comme je n'y connais pas grand choses en déclaration de variables...

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

Discussions similaires

  1. problème sur la fonction CreateProcess(..)
    Par mog83 dans le forum Visual C++
    Réponses: 5
    Dernier message: 20/05/2008, 13h46
  2. [RegEx] problème sur la fonction preg_replace pour formatage
    Par medkyl dans le forum Langage
    Réponses: 4
    Dernier message: 06/02/2008, 17h37
  3. Réponses: 3
    Dernier message: 23/08/2007, 00h39
  4. [MySQL] exécuter un script php en commande linux : problème sur les fonctions mysql
    Par dr_octopus74 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2007, 16h34
  5. problème sur substring (fonction inconnue)
    Par nerick dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/12/2005, 15h46

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