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 :

Tableau structuré => VBA - transformé formule avec réf. style A1 en adresse tableau style [@NomdEntete]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut Tableau structuré => VBA - transformé formule avec réf. style A1 en adresse tableau style [@NomdEntete]
    Bonjour,
    j'aimerai savoir si il existe un moyen (ou une manière de procéder) pour transformer des formules (dont les réf. sont en style A1)
    contenu dans un tableau structuré, en adresse tableau style [@NomdEntete] voir plutôt comme ceci NomTableau[@NomdEntete]

    La condition de cette transformation doit tenir compte que les adresses en question se trouve bien à l’intérieur du tableau structuré
    et non à l’extérieur de ledit tableau, à moins que celle-ci pointe dans un autre tableau structuré;
    dans ce cas il faudra transformé l'adresse en précisant en plus le nom du tableau comme ceci : NomTableau[@NomdEntete].

    Exemple basique : =C2 + E2 deviendrait =[@Entete3]+[@Entete5] ou NomTableau1[@Entete3]+NomTableau1[@Entete5]

    Merci par avance pour l'aide

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    Tu veux additionner des entêtes? C'est exprès que tu as pris des références structurées d'entête?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Hi,

    Ca peut être additionné, multiplié, concaténé … etc
    Et oui c'est bien les références structurées d'entêtes que j'aimerais à la place des références style A1 du moment que celles-ci font bien partie de la plage du tableau
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Additionner des cellules d'entête pose problème car Excel les transforme automatiquement en texte

    Pour le reste, je n'ai pas compris la finalité. Tu peux illustrer avec un exemple?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Cela étant dit, c'est "probablement" possible, mais c'est à mon avis vachement balaise. Repérer dans une formule ce qui est une adresse de cellule, dan le même tableau ou dans un autre tableau du classeur demande d'abord de parser la formule pour en extraire les adresses (relatives, mixtes ou absolues), et déjà là, ca va être vachement coton. Après, il faudrait repérer si elles font partie d'un tableau, si elles sont sur la même ligne, dans quelle colonne...

    Peut-être Est-ce envisageable dans des cas très simples de formules (A2+C2) mais au delà, ça me semble assez casse-gu***
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Cela étant dit, c'est "probablement" possible, mais c'est à mon avis vachement balaise.
    C'est bien pour cela que je pause la question … malheureusement il n'y a pas de FormulaTableau

    je vais voir ce qui est possible et si vous avez des idée je suis preneur …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Question bête: Pourquoi veux-tu transformer des références classiques en tableau? Perso, à part pour les lire, je ne vois pas trop l'intérêt...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonsoir,

    Il n'y a, comme le souligne Pierre, aucun intérêt à vouloir transposer des formules, qui, peu importe comment est leur syntaxe, fonctionnent.

    Sauf si, Ryu est resté sur une discussion récente à propos des tableaux structurés et de la transposition de colonnes (avec formules...).
    Et encore...

    Bon, sinon, face à ton problème du jour, Ryu, il ne s'agit que d'une "très compliquée" transformation de chaîne de caractères...

    Analyse donc un peu le résultat donné par les différentes propriétés de ta cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ActiveCell.Formula
    ActiveCell.FormulaArray
    ActiveCell.FormulaLocal
    ActiveCell.FormulaR1C1
    ActiveCell.FormulaR1C1Local
    Personnellement, pour le type de formule que tu décris dans ton exemple, je me suis arrêté sur la dernière ActiveCell.FormulaR1C1Local.
    Que nous donne cette propriété, avec la formule : "=C2+E2", formule placée en F2 :
    =LC(-3)+LC(-1)
    Je penses, qu'à partir de cette formule, tu peux te débrouiller pour construire la chaîne nécessaire correspondante à ton tableau structuré.
    Après tout :
    1. Dans un tableau structuré, les formules sont identiques de la première à la dernière ligne, donc, n'est à modifier que la formule de la cellule sous l'entête de la colonne concernée,
    2. On peut facilement connaître l'entête d'une colonne correspondante à C(-5) ou C(+18),
    3. Peut-être plus galère (je n'y connais que dalle en tableau structuré) pour remplacer une expression comme L(-15)...



    Après cela, tu devras procéder par étapes, de formules en formules, pour par exemple, transposer la formule (située en E16) : =SOMME.SI(B1:B30;"A";A1:A30)
    qui te donne, via la propriété FormulaR1C1Local : "=SOMME.SI(L(-15)C(-3):L(14)C(-3);"A";L(-15)C(-4):L(14)C(-4))"

    Je rejoins Pierre dans l'idée que cela semble très compliqué pour un résultat que l'on ignore, mais ... ça doit être faisable.

    Bon courage.

    Bon week-end à vous deux et à vos familles!

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir ryu
    j'ai pas tres bien compris mais une address (nom de colonne dans la formule est rendu en address en lecture) je viens tester

    exemple en h8 j'ai "=([Prénom])"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub text()
    MsgBox Cells(8, "H").Precedents.Address
    End Sub
    le message me donne l'address de la cellule en colonne "prénom" sur la meme ligne

    regarde coté precedents sait-on jamais
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Coucou Franck et Patrick,

    Merci du petit coup de pouce, je viens tout juste de voir vos messages; j'étais en train de bosser sur le sujet et je pense (j'ai pas fini) avoir un début de solution
    en plein test avec MsBox pour me diriger vers mon idée

    En général les formules sont étendues à la colonnes, donc l'idée et de parcourir la 1ère ligne du DataBodyRange et de vérifier si il y a une formule (donc oui on a pensé à ma même chose Franck )
    si oui comme, le suggère Patrick (J'y étais aussi - tu me l'as fait découvrir et je ne l'ai pas oublié), on utilise Precedents dans un for each pour avoir chaque adresse que l'on compare avec la formule afin de vérifier que celle-ci y soit bien
    et ensuite on remplace l'adresse par l'adresse de l'en-tête - bien sur il y a les adresses relatives et absolues cf. Precedents, mais ce n'est qu'un petite goutte d'eau, j'ai déjà les idées bien en places;
    une fois la formule remplacé on l'étends à la colonne :

    voilà mon esquisse de vérification afin de créer le code pour reconstruire les formules :
    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
    Sub test()
     
        For Each ListObj In ActiveSheet.ListObjects
            MsgBox ListObj.Name
            For Each LRow In ListObj.ListRows(1).Range
                If LRow.HasFormula = True Then
                    MsgBox LRow.Formula
                    'MsgBox LRow.Precedents.Address
                    For Each P In LRow.Precedents
                        MsgBox P.Address(0, 0) & "  |  " & LRow.Formula
                    Next
                End If
            Next
        Next
     
    End Sub
    C'est là où j'en étais avant de vous répondre (je n'ai pas encore fais la comparaison) - je continue

    PS :Il me parait logique d'utiliser les adresses Tableaux au lieu des adresses en style A1, sinon quel est l'intérêt à MS de les avoir créé - c'est en gros, ou ca l'est, le principe des champs nommés)
    En plus il est assez pratique de pointé dessus …

    Bon week-end à vous aussi et à vos familles!

    et Merci encore

    Ryu

    Edit : Corrections de texte
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    attention à la limitation que .Precedents n'est fourni que si l’antécédent est sur la même feuille.
    On peut donc avoir .HasFormula = True sans Precedents => plantage
    Le tester avant le For Each.
    Ca résoudra par la même occasion les formules du type =nom*3
    Si nom est une constante, on n'aura pas d'antécédent non plus.
    eric

  12. #12
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonsoir Eric,

    Merci pour l'info, je m'en suis aperçu
    je suis en train de regarder aussi du coté de NavigateArrow

    Edit : sur les 1er test que je viens de faire avec NavigateArrow, ca à l'air de le faire - wait and see …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Si vous échangez par mp, alors, merci de clore la présente discussion et de continuer en mp. Ce n'est pas très intéressant pour les autres intervenants s'ils n'ont pas tous les échanges, et ça les empêche de participer
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour Pierre,

    On n'échange pas par MP j'ai juste demandé à Patrick si il pouvait venir sur la discussion pour tester et pas plus !!!!
    Aucun code ou échange technique par MP !!!!
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  15. #15
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Patrick,

    par contre pour avoir testé la formule avec les noms , elle ne fonctionne pas bien entendu
    Qu'entends-tu par la ? Peux tu me donner un exemple stp.
    Parles-tu des champs nommés ?
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    oui si je remplace la formule initiale par par la formule avec les noms ca ne fonctionne pas d'ailleurs quand je la colle dans la cellule j'ai le msgbox d'aide de formule
    par contre apres avoir essayer a la main comme ca

    la formule A2*B2 tu peut l'ecrire simplement comme ca

    =([chiffre]*[pourcentage])(TESTE!!!)

    quand je le fait a la main directement dans le listobject
    ca me marque comme formule
    =Tableau1[[#Cette ligne];[chiffre]]*Tableau1[[#Cette ligne];[pourcentage]]

    comme quoi vba excel est large

    Autrement dit les arguments nom et ligne sont implicites en interne ce que je t'ai deja fait remarqué
    je regarderais tout a l'heure en rentrant ca doit pas etre compliqué de remplacer les address de precedents cells OU !!cells(1) et cells(2) d'un area par les noms de colonnes
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re Patrick,

    Après avoir testé, j'ai trouvé d'où vient le problème.
    Cela se passe dans la fonction "AdrTab" , on peut sûrement régler le problème avec un Index Equive sur l'en-tête de tableau
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Plus haut dans la discussion, je me posais la question de l'intérêt de la démarche. Perso, je n'en vois pas, à part faciliter éventuellement la lecture. Partant de ce constat, pourquoi passer du temps à cela? A part faire évoluer ses compétences dans des algos de parsing, et encore...

    Cela dit, bon amusement
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  19. #19
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Juste quelques mots.

    Je doute qu'il soit intéressant d'essayer de travailler avec les antécédents. En plus de la remarque d'Eric sur la limitation à la feuille, c'est de parsing syntaxique dont il s'agit ici. Il faut donc envisager toutes les règles de la grammaire Excel, et pour moi, ça n'a rien à voir avec les antécédents. Lorsque Excel met une référence en couleur à la saisie d'une formule, ce n'est pas en regardant les antécédents, mais en appliquant une règle de grammaire qui impose que le texte saisi soit la référence d'un antécédent. Il ne faut pas confondre la cause et l'effet, à mon avis.

    Je doute que regarder les références en se focalisant sur les références absolues soient une bonne chose car il y a des références structurées qui sont relatives sur les lignes grâce à l'arobase. N'oubliez pas non plus, ça pourrait simplifier votre travail, quoique, que les références structurées sont relatives ou absolues sur les colonnes en fonction de la façon dont elles sont copiées, sauf à doubler la référence de colonne pour forcer le verrou lors de la recopie par la poignée de recopie (pas par copier-coller qui considère que toutes les références structurées sont absolues sur les colonnes, pas sur les lignes).

    On pourrait regarder une formule sous ses expressions A1 et R1C1, en avançant pas à pas jusqu'à trouver des différences, mais là encore, il faudrait déterminer la règle qui permet de savoir, à partir du premier caractère différent, jusqu'où vont les références A1 et R1C1 dans chaque expression, ce qui revient de toute façon à un problème de grammaire...

    Pour finir, la version 2007 n'est pas forcément la meilleure pour ce genre de projet, car les tableaux structurés n'étaient pas encore matures et la syntaxe est verbeuse, par rapport aux versions suivantes.

    Je ne saurais trop vous conseiller de définir d'abord la méthode que vous allez utiliser, et d'envisager tous les cas grammaticaux, sans vous contenter de suppositions et d'approximations, en vous demandant si vous allez travailler en références A1 ou R1C1. Et je rappelle une dernière fois que pour moi, ça ne sert à rien (mais je peux entendre vos raisons, si vous en avez ).

    Cela dit, je suis loin de maîtriser les algos de parsing de code, et d'autres ont peut-être une approche différente et/ou vont trouver que j'ai dit des bêtises
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Patrick,

    c'est ce que je pensais au départ, travailler avec Precedents, mais je me suis aperçu assez rapidement de la limitation restant, au niveau de la feuille.
    De plus imaginons que nous utilisons par exemple 3 cellules (comme précédents) dans le désordre comme "=F2+H2+I2" sachant qu'en H il y a une formule "=F2*G2", la réponse de Precedents.Address sera $F$2:$I$2
    ou
    dans un For Each $F$2, $G$2, $H$2, $I$2
    Alors oui $G$2 fais bien partie d'un Precedents, mais pas de la formule "=F2+H2+I2"

    C'est pour cela que je suis passé par :
    ShowPrecedents et NavigateArrow, que j'ai appris à connaitre et qui me permettent de dépasser la limitation de la feuille et de sélectionner seulement les cellules concernées par la formule.

    @Pierre Merci pour le lien avec les explications dans ton blog
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

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

Discussions similaires

  1. [XL-2010] Boucle VBA ou formule avec Copier Coller Image
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/07/2013, 15h16
  2. [VBA-E] problème avec une formule
    Par jamelie dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/04/2007, 11h13
  3. [VBA-Excel] Calcul d'une formule avec une inconnue
    Par micwiss dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/10/2006, 16h04
  4. [VBA Excel] sauvegarde avec le contenu de la formule
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/07/2006, 16h19
  5. Copier une formule avec vba
    Par NAMORJOSE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2006, 00h12

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