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 :

traduire un algo en clair en code VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Par défaut traduire un algo en clair en code VBA
    Bonjour

    Il s'agit d'écrire une fonction VBA à appeler dans une formule de tableau Excel 2000

    je connais à peine visual basic

    j'ai besoin d'aide pour traduire en code VBA l'algorithme ci-après


    1/ présentation

    l'objectif est de "descendre" dans une ligne colonne par colonne la première valeur non nulle
    touvée dans une des lignes précédentes en les remontant sur la même colonne.

    exemple :
    partant d'une cellule de ma ligne courante,
    si la cellule est vide je récupère celle de la cellule du dessus (ligne précédente, même colonn)
    et si cette cellule est vide je récupère celle du dessus
    et ainsi de suite jusqu'à trouver une valeur non null
    cette action s'arrête à plus haute ligne.

    les lignes sont groupées sur les mêmes valeurs de colonnes tarticulières
    (exemple 1 colonne identifiant, 1 colonne date, ...)

    on voit aussi donc qu'il s'agit d'une traitement récursif.


    2/ algorithme à travduire en VBA


    récupvaleur(lig_courante, col_reference, col_exploree)

    si cellule(lig_courante,col_exploree) pas null alors

    //---une valeur est déjà sur la ligne courante
    renvoit cellule(lig_courante,col_exploree)

    sinon

    si lig_courante = 1 alors

    //---cas limite de la première ligne du tableau Excel
    renvoit null

    SINON

    //---valeur prise sur le ligne précedente
    //---groupée avec la ligne courante par une même valeur sur la colonne référence
    si cellule(lig_courante-1,col_reference) = cellule(lig_courante,col_reference) alors

    //---on recommence avec la ligne précédente
    renvoit récupvaleur(lig_courante-1, col_reference, col_exploree)

    sinon

    //---on a atteint la plus haute ligne sans trouver de valeur
    renvoit null

    finsi

    finsi

    fini


    3/ j'ai besoin aussi de savoir comment invoquer une telle focntion dans une formule excel
    il faudra probablement l'inclure dans les fonction excel
    mais comment faire ?

    Merci pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 40
    Par défaut
    bonsoir
    je veux pas être désagréable mais j'ai l'impression que tu nous donne là une exercicre à faire
    Je vais me permettre de parler comme un responsable du forum, mais c'est précisément un forum VBA, donc on discute et on s'entraide entre développeurs* (lol pour ma part je dirais plutôt débutant).
    Donc après initiation au langage tu viens ici avec des questions même les plus basiques (il n'y a pas de questions qui soient bêtes, seules les réponses le sont) et je pense qu'avec plaisir, des dixaines de membres viendront te répondre.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Par défaut Ma question est basique
    Je n'aurais pas posé (et exposé assez clairement) ma question si je pratiquais VBA.
    J'ai simplement pensé faire appel à ceux qui savent. C'est basic !

    J'espère qu'un de vous aura l'amabilité de me donner quelques tuyaux.

    Dans mon quotidien je pratique la gestion de projet, et assiste les utilisateurs pour la rédaction de cahier des charges.

    cordialement

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 124
    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 124
    Par défaut
    SAlut
    Bien que je soit d'accord avec Nivlys26 dans le fond je vais quand meme te donner un morceau de code qui devrait faire ce que tu veux, as toi de l'adapter iun peu si ca n'est pas le cas. On n'est pas non plus ici pour faire le boulot des autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub rowprecedent()
    'on verifi que la cellule selectionne ne contient pas plusieur cellule
    If Selection.Count > 1 Then Exit Sub
     
    'On verifi que le cellule juste au dessus contient quelquechose
    If Selection.Offset(-1, 0).Value <> "" Then
        Selection = Selection.Offset(-1, 0) 'Si oui on attribut cette valeur
    ElseIf Selection.End(xlUp).Row <> 1 Then 'Si non on charche la derniere case non vide au dessus de otre cellule en controlant que ce n'est pas la 1ere ligne (entete de colonne)
        Selection = Selection.End(xlUp) ' Si oui on attribut la valeur de la derniere case non vide
    Else
        'Ici il faut mettre ce que tu veux si aucune valeur n'est trouvé
    End If
     
    End Sub
    A++
    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
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Par défaut
    merci à Quazerty
    tes indications vont me faire gagner du temps
    je remonterai sous peu mes premiers résultats et prochaines questions.

    A+

Discussions similaires

  1. Traduire un algo en vba ?
    Par dgino dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 26/07/2013, 11h10
  2. [XL-2007] Code vba :Mettre sous forme de tableau style de tableau clair 1
    Par aiglevb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2013, 12h57
  3. [XL-2010] Traduire une formule en code VBA
    Par thomasdu40 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/07/2012, 09h39
  4. traduire un code vba vers vb.net
    Par houssine77100 dans le forum VB.NET
    Réponses: 3
    Dernier message: 21/11/2010, 13h15

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