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 :

Traduction Formule en VBA ( recherchev d'une petite valeur)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    TRéSORIER
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : TRéSORIER

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut Traduction Formule en VBA ( recherchev d'une petite valeur)
    bonjour,

    j'utilise une formule qui bug parce que les données se trouve dans un classeur fermé donc je me réfère a vous pour m'aider a traduire ma formule en vba pour éviter l'erreur .

    ci dessous la formule que j'utilise :

    =SI(AUJOURDHUI()-1<$A4;"";RECHERCHEV(PETITE.VALEUR('\\ylavpa15\RAFI\Tresorerie\D_Tresorerie\DEPARTEMENT TRESO 2016\SUIVI CHEQ 2016\[cpa 108.xls]CPA juin 2016 '!$A$10:$A$500;NB.SI('\\ylavpa15\RAFI\Tresorerie\D_Tresorerie\DEPARTEMENT TRESO 2016\SUIVI CHEQ 2016\[cpa 108.xls]CPA juin 2016 '!$A$10:$A$500;"<="&$A4));'\\ylavpa15\RAFI\Tresorerie\D_Tresorerie\DEPARTEMENT TRESO 2016\SUIVI CHEQ 2016\[cpa 108.xls]CPA juin 2016 '!$A$10:$H$500;8;1))

    résultat : dernière valeur en cherchant la date d'hier ou la date la plus proche ( date antérieur ) sur le classeur de données.

    meilleures salutation .

    je vous remercie par avance .

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Points : 188
    Points
    188
    Par défaut
    Bonjour,

    Ce n'est pas parce que tu es nouveau sur ce forum (premier message ?) qu'il ne faut pas respecter les règles.

    Premièrement, quand tu as du code à mettre, utilise les balises [ CODE] [ /CODE] que tu vois via le bouton avec un # dedans.

    De plus, nous ne sommes pas là pour faire ton travail, mais t'aider à résoudre tes problèmes. Là tu nous demande de faire un truc pour toi, alors que tu n'as pas cherché à le faire par toi même (ou du moins tu l'as fait, mais tu ne nous indique pas tes pistes de recherche).

    Et je finirai en te demandant: pourquoi vouloir faire une formule en VBA alors que c'est une Formule Excel ?
    VBA n'est pas une baguette magique. Il faut d'abord penser EXCEL avant de penser VBA.


    Bonne journée,

    Slooby.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela bogue parce-que certaines fonctions d'excel renvoient une erreur quand elles font références à un classeur fermé (liaison) NB.SI, SOMME.SI en font partie.
    Remplace NB.SI par SOMMEPROD

    Exemple
    Cette formule est en erreur si le classeur lié est fermé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI('\\VBOXSVR\Partage\Formations\En préparation\Excel - Les Liaisons\Liaison Test Fonction - Fichier Source.xls'!tblTestCountIf;L216)
    alors que la fonction ci-dessous qui renvoie la même valeur fonctionne parfaitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD( ('\\VBOXSVR\Partage\Formations\En préparation\Excel - Les Liaisons\Liaison Test Fonction - Fichier Source.xls'!tblTestCountIf=L292) * 1)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    TRéSORIER
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : TRéSORIER

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    bonjour Slooby,

    je m'excuse si j'ai fais une erreur de ne pas mettre mon code dans la section "CODE"; mais ça ne vous permet pas de me répondre comme si vous me connaissait .

    je suis un trésorier de base, je me débrouille pas mal en formules excel , j'ai eu une erreur lié au dossier source qui reste fermé , en vba je sais que un moyen de connexion de classeur fermer est faisable ,j'ai bien chercher j'ai appliqué pas mal de tests mais ça n'a abouti a rien ,

    je voudrais bien amélioré et automatisé mes fichiers et minimiser le risque d'erreur , je suis passer sur le forum pour savoir faire des experts ici et j'ai demander de l'aide je n'ai jamais osé ordonné a qui que se soit pour faire mon travail a ma place.

    merci pour votre attention .

    meilleures salutations.

    bonjour Philippe Tulliez,

    je vous remercie infiniment ,j'avais déjà essayer et je crois que j'ai fauter sur quelque chose ,la formule fonctionne super bien , mais la formule de petite valeur me fausse les données .

    j’aurais aimer que ça se passe en VBA parce que c'est toute un projet de développement et d'automatisation que j'ai en tête .

    j'ai la vision mais je manque de savoir faire malheureusement.

    merci encore .

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour traduire et écrire une formule en VBA à lire Ecrire une formule dans Excel à l'aide d'une procédure VBA et Comment écrire une formule plus complexe dans une cellule ?
    Si l'idée est d'exploiter le résultat dans une variable, plusieurs options s'offrent à toi, la fonction Evaluate ou utiliser les méthodes CountIf de la propriété WorksheetFunction de l'objet Application

    Exemple de l'utilisation de la fonction Evaluate avec NB.SI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub T()
     Dim monResultat As Integer
     monResultat = Evaluate("=COUNTIF($A$2:$A$9,A2)")
     MsgBox monResultat
    End Sub
    Exemple avec la méthode Countif de la propriété WorksheetFunction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub T()
     MsgBox Application.WorksheetFunction.CountIf(Range("A2:A9"), Range("A2"))
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    TRéSORIER
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : TRéSORIER

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    alors pour comprendre sur quoi je travaille, ci-joint un modèle du relevé bancaire qui servira de données (classeurs placés dans un partage comme indiqué dans la formule) et une recap des soldes sachant que j'utilise cette formule sur plusieurs relevés pour avoir une recap des soldes journaliers.

    le relevé est mis a jour quotidiennement pour au final avoir un relevé annuel, la recap des soldes se met a jour a chaque changement du relevé sinon je reprends le dernier solde sur le relevé ( c'est pourquoi j'utilisais la petite.valeur )

    je voudrais recopier la valeur du solde de chaque fin de journée sur chaque relevé ( 15 relevés bancaire ) qui est en colonne H suivant la banque et la date sur le fichier synthèse "recap"

    merci
    Fichiers attachés Fichiers attachés

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je donne des pistes suivant les demandes mais je ne fais pas le travail et je n'ouvre que très rarement les classeurs joints.
    Le but d'un forum comme celui-ci (je sais qu'il en existe au moins un où les seuls échanges se font par classeurs interposés) est de partager des expériences aux travers de questions et de réponses que chacun puisse lire et pas télécharger.
    C'est à toi d'expliquer correctement comment sont organisées tes données et ce que tu souhaites obtenir comme résultat final.
    Step by Step
    Ce que tu demandes nécessite sans aucun doute plusieurs questions à répartir sur plusieurs discussions.

    Avant de penser à effectuer le travail en VBA, il faut se poser la question de comment résoudre le problème manuellement.
    Excel est tellement riche en fonctionnalité que par moment une dizaine de lignes de programmation suffise à automatiser une tâche répétitive. Encore faut-il bien analyser ses besoins et bien connaître Excel (c'est à ce moment là que des intervenants peuvent t'aider).
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    TRéSORIER
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : TRéSORIER

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    mon besoin se base sur une petite recap qui englobe les soldes journaliers de chaque relevé bancaire ,
    donc mon relevé comporte des dates d’opérations des libellés et des montant avec chaque opération se trouve un solde .
    sur la recap j'ai 15 colonnes avec les nom des banques ,et un calendrier en colonne A ,

    je voudrais avoir le sous total de chaque journée si elle existe sur les relevé et la copier en cellule " date ; banque" dans le fichier recap ,dans le cas ou le relevé n'est pas a jour le solde pris en considération est le solde de la première date qui vient avant.

    la recap se met a jour en J-1 veut dire ,aujourd’hui la recap cherche le solde de hier sur le relevé sinon celui d'avant qui peut varié de 1 jour a max

    je viens de faire un effort, j’espère que ce que je viens d’écrire est plus claire, voudriez vous m'aider svp
    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
    ' ca serait bien de la rendre événementielle
    Sub Boucle()
    Dim monResultat As Integer
    Dim I As Long
    donnée = "ylavpa15\RAFI\Tresorerie\D_Tresorerie\DEPARTEMENT TRESO 2016\SUIVI CHEQ 2016\[bna.xls]BNA Juin 2016"
    'condition de mise a jour pour aujourd’hui -1
     
     
    Set Z = donnée.Range(A7, A)
     
        For I = A3 To Z
            monResultat = Evaluate("=COUNTIF(Z,I)")
            'If monResultat = 1 Then Cell.Value = cellule en "H" de la derniere valeur i trouver dans donnée je crois que je devrais appliquer une Vlookup de I ???
            'if not trouver la derniere date saisite et donné son solde
        Next I
    End Sub

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    sans aller plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    donnée = "ylavpa15\RAFI\Tresorerie\D_Tresorerie\DEPARTEMENT TRESO 2016\SUIVI CHEQ 2016\[bna.xls]BNA Juin 2016"
    'condition de mise a jour pour aujourd’hui -1
    Set Z = donnée.Range(A7, A)
    comme tu l'écris, "donnée" est un"String", es-tu sur de cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Z = donnée.Range(A7, A)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme je te l'ai expliqué plus haut, il faut prendre les problèmes un par un et expliquer comment sont organisées tes données (nom de la feuille, étiiquettes de colonnes) et le résultat attendu compte tenu des données existantes accompagné éventuellement d'une image.
    Le code que tu as publié n'exploite même pas la variable monResultat. Tu te contentes de recopier des bouts de code sans en comprendre le sens.
    J'entends bien que tu débutes mais alors commence par lire les tutoriels qui sont à ta disposition sur ce site et fait de tout petit programme en utilisant des tableaux se trouvant sur la même feuille pour déjà comprendre comment cela fonctionne.
    Tu débutes et tu voudrais déjà faire du VBA avec liaison de classeur.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2000] Fonction RECHERCHEV renvoie une mauvaise valeur
    Par kstorfou dans le forum Excel
    Réponses: 3
    Dernier message: 21/12/2009, 09h30
  2. Copier une formule avec vba
    Par NAMORJOSE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2006, 00h12
  3. [VBA-E]gérer une petite base de données
    Par massilia80 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/02/2006, 13h59
  4. [VBA-E] Copier une formule de calcul dans toute la ligne
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2005, 18h18
  5. [VBA-E]Etablir une macro d'une fonction rechercheV
    Par dani317 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2005, 11h06

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