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 :

Permutation de colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 37
    Par défaut Permutation de colonnes
    Bonjour,

    Alors tout d'abord, je me permets de vous dire que je suis un novice complet en VBA. mais je souhaite me lancer dans ce beau monde.
    J'ai dans l'idée de créér une macro permettant de mettre en forme un fichier excel issu d'un appareil de mesure pour le mettre dans une mise en forme
    En gros, je souhaiterai supprimer quelques lignes de ce fichier (les 10 premières), supprimer la première colonne, et ensuite intervertir 'ordre des colonnes.
    J'ai fait une première approche en utilisant la commande d'enregistrement d'une macro, mais je suis vite limité.
    Mes appareils de mesures en questions sont des enregistreurs de températures et d'humidité de l'air et suivant le nombre de voies de mesures actives, j'aurais plus ou moins de colonnes. Au max, avec ce type d'appareils, j'ai 4 voies des mesures qui sont présentent sur les colonnes allant de C à F.
    Et suivant la durée de mes acquisitions, le nombre de points de mesures (donc de lignes) varie.
    Donc mes questions qui me viennent en tête en écrivant:
    - comment sélectionner une colonne jusqu'à la dernière valeur présente?
    - si je veux permuter les colonnes C avec D et E avec F, comment faire?

    En vous remerciant de votre précieuse aide.

    Bertrand

  2. #2
    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
    bonjour l'enregistreur de macro ca te parle?

    fait avec l'enregistreur de macroS
    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 Macro3()
        Columns("E:E").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Columns("G:G").Select
        Selection.Cut Destination:=Columns("E:E")
        Columns("G:G").Select
        Selection.Delete Shift:=xlToLeft
        Columns("E:E").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Columns("C:C").Select
        Selection.Cut Destination:=Columns("E:E")
        Columns("C:C").Select
        Selection.Delete Shift:=xlToLeft
    End Sub
    a noter que tu peux netoyer le code de tout les select
    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

  3. #3
    Membre averti
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 37
    Par défaut
    Bonjour Patrick,
    Merci pour ta réponse. oui, cela me parle.
    j'ai essayé un peu, cela marche dans le cas d'un fichier.
    malheureusement mes fichiers n'ont pas tous le même nombre de lignes ou de colonnes, donc ma macro créée avec l'enregistreur ne marche plus.

  4. #4
    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
    Citation Envoyé par bert35 Voir le message
    Bonjour Patrick,
    Merci pour ta réponse. oui, cela me parle.
    j'ai essayé un peu, cela marche dans le cas d'un fichier.
    malheureusement mes fichiers n'ont pas tous le même nombre de lignes ou de colonnes, donc ma macro créée avec l'enregistreur ne marche plus.
    ???????
    regarde ma reponse je l'ai rééditée
    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

  5. #5
    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
    le code nétoyé ca donne ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro3()
        Application.ScreenUpdating = False
        Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Columns("G:G").Cut Destination:=Columns("E:E")
        Columns("G:G").Delete Shift:=xlToLeft
        Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Columns("C:C").Cut Destination:=Columns("E:E")
        Columns("C:C").Delete Shift:=xlToLeft
    End Sub
    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

  6. #6
    Membre averti
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 37
    Par défaut
    Merci Menhir et Patrick

    J'ai testé le code de Patrick, cela semble me correspondre. Un grand merci.
    1 question cependant:
    - la ligne Application.ScreenUpdating, c'est quoi au juste?

  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
    Patrick,


    Un code comme celui que je propose, et comme beaucoup d'autres, parce qu'il est générique, s'utilise en une ligne par un novice, parce qu'il est générique justement, et qu'il demande au novice de le copier-coller puis de l'utiliser selon les commentaires qui sont fournis avec. Sa seule responsabilité, en ce qui concerne un code générique, consiste à savoir le copier-coller puis l'utiliser en passant, dans le cas du mien par exemple, les noms des colonnes dans le bon ordre et sans fautes d'orthographe. C'est une surcouche qu'il peut utiliser comme une procéudere native de VBA ou du modèle objet d'Excel.

    On ne lui demande pas de comprendre ce code, dans un premier temps, il est juste proposé comme solution directement exploitable. Et comme il est générique, ce n'est justement pas grave s'il n'en comprend pas toutes les lignes.

    Si tu lui donnes un code "adapté" à son cas, comme ici, et qui flingue son classeur en bousillant ses formules, ses formats et tout le reste, tu l'aides nettement moins que si tu lui donnes un code auquel il doit simplement passer des paramètres.

    Est-ce si difficile de comprendre cela?
    "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
    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
    Est-ce si difficile de comprendre cela?
    non pas du tout
    c'est bien ce que je dis faire faire par quelqu'un

    c'est tout a ton honneur de fournir un code clé en main gratuitement mais ne me dit pas que ca aide un debutant c'est pas vrai , ca lui fait le boulot c'est tout
    ne sachant pas decortiquer un code simple généré ,tu crois qu'il va s'amuser a decortiquer le tiens serieusement ?
    et combien meme il tenterais l'aventure ce serait apprendre a voler en f15 avant de savoir faire du velo
    mais bon si tu veux ta fonction fonctionne il a plus qu'a
    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

  9. #9
    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
    Tout à fait d'accord avec l'intervention de @Menhir

    Vu la présentation de @Bert35, j'ai pas l'impression qu'il y a une quelconque mise en forme ou des formules …, mais simplement des données brutes à retravailler afin de faire par la suite une mise en forme finale avec tout ce qui s'en suit. De toute façon il y a que lui qui peut nous le préciser.

    Maintenant il est là pour apprendre, et il peut se rendre compte que selon le contexte de sa problématique, il devra bien faire attention à bien choisir la solution la plus adéquate à son problème …
    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 ;)

  10. #10
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par bert35 Voir le message
    je souhaiterai supprimer quelques lignes de ce fichier (les 10 premières)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:A10").EntireRow.Delete
    supprimer la première colonne
    et ensuite intervertir 'ordre des colonnes.
    Pas assez précis comme description.

    - comment sélectionner une colonne jusqu'à la dernière valeur présente?
    Le plus simple est de sélectionner la colonne elle-même.

    - si je veux permuter les colonnes C avec D et E avec F, comment faire?
    Couper la colonne D et l'insérer en colonne C.
    Idem pour E et F.
    https://msdn.microsoft.com/fr-fr/lib.../ff838374.aspx
    https://msdn.microsoft.com/fr-fr/lib.../ff840310.aspx

  11. #11
    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
    Loïc,

    Ca fait vingt ans que j'enseigne Excel et VBA. Je peux t'affirmer que, selon mon expérience, l'enregistreur ne met pas le novice sur la voie. Au pire cela le décourage, au mieux il va s'exténuer des flopées d'heures à essayer de comprendre pourquoi son code ne fonctionne pas, détruit ses données, plante Excel.

    L'enregistreur, ça "aide" soit le gars qui connaît le VBA mais qui ne se souvient plus d'une manip (pour autant que la manip soit réalisable avec l'enregistreur), soit la personne qui a des soirées et des weekends à perdre et qui s'accroche, et ça décourage les autres...

    L'enregistreur, c'est: pas de variables, pas de boucles (donc du code bêtement répétifif), au début pas de Option Explicit, donc des problèmes de faute de frappe qu'on met des heures à déboguer, etc, etc...

    Voilà une plage qui se trouve sur la feuille nommée en Excel Feuil1...

    Nom : 20180905_01.png
Affichages : 515
Taille : 6,5 Ko

    Voici le code de l'enregistreur qui en permute des colonnes.
    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 Macro6()
    '
    ' Macro6 Macro
    '
     
    '
        Sheets("Feuil1").Select
        Range("C1:C3").Select
        Selection.Cut
        Range("A1:A3").Select
        Selection.Insert Shift:=xlToRight
        Range("C1:C3").Select
        Selection.Cut
        Range("B1:B3").Select
        Selection.Insert Shift:=xlToRight
    End Sub
    Essayez de faire l'exercice intellectuel de rendre cette macro générique pour réorganiser n'importe quel tableau (en faisant abstraction de vos connaissances actuelles du VBA). Par exemple, de manière à permuter le tableau suivant se trouvant sur une feuille nommée en Excel Consolidation pour réorganiser les colonnes selon l'ordre Code - Prénom - Nom - Grade - Service - Date.

    Nom : 20180905_02.png
Affichages : 552
Taille : 20,9 Ko

    Alors, il suffit de supprimer les Select comme le propose Patrick? Je pense que c'est un poil plus complexe.
    Il suffit d'appliquer la macro de Ryu en la transformant mal parce que pas commentée? J'ai fait la démonstration que non (ce n'est pas une attaque perso, Ryu, c'est un constat technique).

    Les gens qui viennent sur XL-VBA ne sont ni des programmeurs, ni des passionnés, pour la plupart. Alors leur donner un code qui plante leur fichier et qui va finalement les aider (peut-être!) après une discussion de 50 postes avec des renvois non commentés vers l'aide en ligne, je doute franchement que ça les aide. Beaucoup d'utilisateurs du forum VBA-XL posent des questions non pour apprendre le VBA, mais pour avoir une solution, la plus pertinente possible, à leur problématique du moment, souvent dans l'urgence d'un fichier qui plante alors que ce n'est pas le moment. Leur donner une solution qui plante va les aider? Je pense que non. C'est comme quand on répond à quelqu'un qui se risque à FSO que FSO, c'est de la mer***, c'est lourd, beurk, et qu'on lui balance une api ou un DIR récursif. Qu'Est-ce qu'il s'en fout que FSO soit lourd... Dans 99% des cas, ça fait le job souhaité. Dans la plupart des cas, nous de répondons pas à des programmeurs, juste à des utilisateurs d'Excel pour qui l'application et le VBA sont des outils, dont beaucoup se passeraient volontiers s'ils le pouvaient, et qui n'ont pas toujours la possibilité de faire appel à des prestataires externes (ce que je regrette ). Et contrairement à ce que dit Ryu, non, les gens qui posent des questions sur le forum ne sont pas forcément là pour apprendre, et encore moins avec des codes foireux!

    Et d'ailleurs, Patrick, lorsque tu tentes de proposer du code dans la rubrique Contribuez, que fais-tu d'autre que de proposer du code générique? C'est une attitude pour le moins paradoxale de tenter de proposer du code générique puis de diSi on suit vos raisonnements (adapter, apprendre, ...), supprimons la rubrique Contribuez et supprimons les sources proposées sur le portail Excel, puisque c'est si simple d'adapter le code proposé en réponse à une question... . Honnêtement, je ne vous comprends pas.


    Et pour finir, je me fous que des solutions différentes des miennes soient proposées, ou plutôt non, je trouve ça très chouette, comme le souligne souvent Ryu. Mais faut-il encore qu'elles fonctionnent et qu'elles ne foutent pas la pagaille au lieu de proposer une solution...
    "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...
    ---------------

  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
    Et contrairement à ce que dit Ryu, non, les gens qui posent des questions sur le forum ne sont pas forcément là pour apprendre,
    Rectification : je n'ai pas dit les gens , j'ai parlé de demandeur @bert35 qui à l'air bien motivé pour s'améliorer et donc apprendre, et d'ailleurs il prévoit de créer beaucoup de discussion, d'après ce que j'ai compris.

    Dans le cas de simple données en Value, tu as raison cela doit être un code foireux, que Marc-L m'a appris et qui est cité plusieurs fois pour diverses solutions.

    Maintenant on a fait une polémique sur le code prenant en compte des formules, dont j'ai montré un cas simple et qui marche, mais en aucun cas j'ai dit que l'on pouvait le généralisé à tout;
    et comme tous codes/solutions, ils ont tous à un moment une limite qui fait que l'on doit revoir/étudier la problématique sur certains aspect afin d'éviter des déboires.
    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
    Citation Envoyé par RyuAutodidacte Voir le message
    [...]

    Dans le cas de simple données en Value, tu as raison cela doit être un code foireux, que Marc-L m'a appris et qui est cité plusieurs fois pour diverses solutions.[...]
    Ca me plairait grandement que tu cites les portions de message ou je dis que le code est foireux pour des Value, car je dis explicitement qu'il ne fonctionne par pour les formules, les formats, la mise en forme conditionnelle.

    Mais qu'il soit pondu par marc-l, le pape ou jupiter, je m'en moque. Il transforme les dates en texte (et donc oui, il est foireux pour des Value, en fait) et il ne fonctionne que dans le cas précis d'une feuille libre de tout autre donnée que celles à permuter, et en les faisant commencer en A1. Et oui, il va demander des transformations importantes pour pouvoir être utilisé hors de ce cas précis et restrictif. On ne peut donc pas dire que ce soit un code mirobolant.

    Citation Envoyé par RyuAutodidacte Voir le message
    [...]Maintenant on a fait une polémique sur le code prenant en compte des formules, dont j'ai montré un cas simple et qui marche[...]
    Je t'ai démontré avec une simple formule toute bête que ton code foire avec des formules.


    Citation Envoyé par RyuAutodidacte Voir le message
    [...]
    mais en aucun cas j'ai dit que l'on pouvait le généralisé à tout;
    et comme tous codes/solutions, ils ont tous à un moment une limite qui fait que l'on doit revoir/étudier la problématique sur certains aspect afin d'éviter des déboires.
    Jusqu'à preuve du contraire, mon code fonctionne dans tous les cas que j'ai soulevé, et peut être adapté facilement pour les tableaux qui ne sont pas structurés, sans casser les formules, sans casser les formats, sans casser les mises en forme conditionnelles, sans casser les formules qui sont ailleurs dans le classeur et qui pointent vers ce qu'on est en train de permuter. A chacun de l'essayer s'il le souhaite, et d'y apporter des améliorations (il y en a sûrement) dans un esprit constructif. Mais s'arcbouter sur une solution foireuse ne me semble pas raisonnable... L'améliorer, la tienne, la mienne ou une autre, me semble bien plus constructif sur un forum
    "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
    je vais arrêter là la discussion car je pense que l'on ne se comprend pas et j'ai pas envie de rentrer dans un débat ou je parle pas de la même chose que toi et pas dans les mêmes conditions données/codes

    et oui je confirme tu n'as pas dit le mot foireux, c'est moi qui l'ai dit pour la simple raison que tu insistes sur ce code en disant qui ne marche pas pour tel ou tel raisons,
    alors que ce code là je l'utilise mais pas dans les même conditions que tu décris, et il n'a pas vocation à tout faire et ça je le sais.
    Maintenant je n'ai pas cherché la perfection du code à tout faire, mais juste à répondre au besoin du demandeur (qui je pense pour l'instant n'a rien fait sur son fichier au niveau mise en forme, formule, etc …)

    Je clos maintenant la discussion

    PS : j'ai pas critiqué ton code qui peut apporter une solution à des forumeurs, et non ce n'est pas une attaque perso de ma part aussi, je pense juste que tu n'as pas compris je que je voulais expliquer …
    Tant pis c'est pas grave on peut pas forcément se comprendre tout le temps
    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
    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
    @pierre
    j'ai fait joujou avec ce truc

    ebauche qui fonctionne facilement transformable en fonction
    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
    [Sub test()
        mestitre = Array("titre4", "titre2", "titre3", "titre1")
        Set plage = Range("A1:D10")
        With plage
            For arr = 0 To UBound(mestitre) - 1
                For i = 1 To .Columns.Count + .Column - 1
                    If Cells(1, i) = mestitre(arr) Then
                        Cells(1, i).Resize(.Rows.Count, 1).Cut
                        If mestitre(arr) <> .Cells(1, (arr + 1) + .Column - 1) Then Cells(1, arr + 1).Resize(.Rows.Count, 1).Insert Shift:=xlToRight
                    End If
                Next
            Next
        End With
        Application.CutCopyMode = False
    End Sub
    je n'ai suivi que le raisonnement de ta macro 6 que j'ai etendu a x colonnes en fonction de l'array des titres

    Nom : demo.gif
Affichages : 634
Taille : 339,9 Ko
    qu'est ce que tu en pense ?
    je pense meme que l'on peut la racourcir d'une ligne ou 2 en mergeant les "IF"

    Bon je l'avoue j'ai mis pres de 20 minute a comprendre pourquoi j'avais une erreur sur la derniere colonne i
    il faut pas la faire c'est tout car elle est forcement a la place indiqué par l'array
    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

  16. #16
    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.

    Pour la permutation de colonnes dans un tableau structuré, je propose une solution sur mon blog. Cette solution est générique et ne demande que très peu de connaissances en VBA pour être mise ne place.

    Je peux rejoindre Chris avec une solution par PowerQuery car c'est simple à mettre en place, mais il faut garder à l'esprit qu'elle fait une copie du tableau initial dans le cache de PQ puis rend à nouveau les valeurs adaptées dans une nouvelle feuille(si je ne dis pas de bêtises, Chris, corrige-moi au passage si j'étais dans l'erreur)... Ca fait trois fois les valeurs dans le classeur. Ce n'est pas à négliger pour un grand tableau.
    "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...
    ---------------

  17. #17
    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
    Bonjour Pierre

    je t' ai justement proposé une petite fonction sur la base de l'idée de ryuautodidacte dans ton billet
    tout depends de ce que qu'il y a dans les cellules formules ou value
    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

  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
    Citation Envoyé par patricktoulon Voir le message
    [...]

    je t' ai justement proposé une petite fonction sur la base de l'idée de ryuautodidacte dans ton billet[...]
    Oui, j'ai vu




    Citation Envoyé par patricktoulon Voir le message
    re
    bonjour 78chris
    pour ma part n'utilisant 2016 qu'a l'occasion comme beaucoup encore je supose, il me semble un peu tot pour proposer powerquery
    PowerQuery est disponible en AddIn depuis XL2010
    "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
    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,

    Moi je vais rester sur ma "version" même dans le cas de formules
    devine pourquoi …
    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 ;)

  20. #20
    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
    @ryu

    je ne sais pas tu meurs d'envie de me le dire
    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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/10/2013, 22h38
  2. permutation des colonnes d'une matrice
    Par jane40 dans le forum R
    Réponses: 2
    Dernier message: 26/04/2011, 13h00
  3. permutation de colonnes dans une matrice
    Par omar.ayadi dans le forum MATLAB
    Réponses: 10
    Dernier message: 16/01/2009, 10h30
  4. [DBGrid] Permutation des colonnes
    Par mqrv2008 dans le forum Débuter
    Réponses: 3
    Dernier message: 10/10/2008, 15h58
  5. Réponses: 2
    Dernier message: 19/12/2006, 22h57

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