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 :

Copie la selection d'une plage de celle visible


Sujet :

Macros et VBA Excel

  1. #21
    Expert confirmé
    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
    Points : 4 174
    Points
    4 174
    Par défaut
    bonsoir,

    et si tu fais un tour dans la il y a ce lien qui est un passage obligé pour tout débutant permettant de faire correctement ses déclarations de variables (très important - PS le "&" est indiqué comme d'autres à découvrir) :
    http://silkyroad.developpez.com/VBA/LesVariables/

    dans le cas où tu veux faire ces déclarations correctement coche la case dans les préfs. "Déclaration des variables obligatoire", tu verras en haut de ton module écrit … "Option Explicit"
    en écrivant tes Sub en dessous tu n'auras plus le choix que de déclarer tes variables => bon exercice , bonnes habitudes
    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 en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    merci RyuAutodidacte j'ai déjà lu la FAQ avant bien sur .mais on comprend les choses à l'utilisation en général.
    les déclarations de variable j'ai ai discuté sur ce forum certains préconisent de déclarer d'autres préconisent que c'est pas obligatoire .
    c'est vrai que çà prend du temps ces déclarations à la différence d'autres langages comme php ou jquery.
    merci quand même du conseil

  3. #23
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    certains préconisent de déclarer d'autres préconisent que c'est pas obligatoire
    1) Qui préconise que non ?
    Il faut déclarer
    2) le suffixe & est une des deux notations possibles de déclaration d'un type Long
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #24
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par bigs3232 Voir le message
    si je voudrais copier la sélection active vers le bas jusqu'à la fin de la ligne filtrée et visible, je ne sais pas si c'est possible avec votre méthode
    C'est possible mais il y a une autre voie comme pourtant déjà indiquée :

    Citation Envoyé par Marc-L Voir le message
    Déjà je dévoile un secret :  la méthode Copy comme la méthode Delete s'occupent uniquement des cellules visibles !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Demo1()
        Selection.Copy Range(Selection, Selection.End(xlDown))
    End Sub
    ___________________________________________________________________________________________________________

          Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    merci marc votre dernier code est superbe de simplicité.ca marche tres bien.
    effectivement copy et delete marche que sur cellules visibles .je retiens çà .du coup c'est clair que c'est plus simple à coder?pourquoi je me prend la tete à compliquer la vie.

    unparia vous pouvez donner un exemple concret ou c'est grave de ne pas déclarer les variables .merci

  6. #26
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    unparia vous pouvez donner un exemple concret ou c'est grave de ne pas déclarer les variables
    Quoi ?????
    Je viens (relire attentivement) de dire exactement le contraire !
    1) Qui préconise que non ?
    Il faut déclarer
    Enfin : traduire "faut" par "toujours très fortement recommandé de".
    Commencer par travailler en Option Explicit (ne viens pas ajouter un nouveau message pour demander ce que c'est, hein ... Ouvre donc ton aide interne VBA à la rubrique Option Explicit, instruction et LIS )
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    j'ai trouvé quelques liens qui expliquent je vais lire tranquillement.

    merci à tous

  8. #28
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    j'ai trouvé quelques liens qui expliquent
    L'aide interne de VBA (c'est la seule que je consulte généralement) est suffisante !
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #29
    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,
    les déclarations de variable j'ai ai discuté sur ce forum certains préconisent de déclarer d'autres préconisent que c'est pas obligatoire .
    Ce n'est pas obligatoire au niveau du langage Visual Basic mais c'est vivement conseillé ne fut-ce que pour t'éviter des heures de recherche dans un code où tu n'obtiens pas le résultat attendu parce-que tout simplement tu as un moment donné écrit le nom d'une variable avec une autre orthographe.
    c'est vrai que çà prend du temps ces déclarations
    Bien moins de temps que cette recherche et puis cela fait partie d'une bonne pratique de la programmation.
    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

  10. #30
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par bigs3232 Voir le message
    merci marc votre dernier code est superbe de simplicité.ca marche tres bien.
    Et donc en chauffant une paire de neurones une boucle est inutile pour le premier code si deux cellules sont sélectionnées …

    Et déclarer juste les variables en entête de procédure, l'instruction Option Explicit en tête du module rendant cela obligatoire …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #31
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    oui marc je reconnais que mon code n'est pas top .trop long mais bon ca me permet d'avoir deux versions la votre et la mienne
    je ne suis qu'un débutant en VBA que je commence vraiment à aimer ce language

    oui merci philippe j'ai fouillé un peu sur internet

  12. #32
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Alors voici deux règles principales à respecter :   TEBV   et   TBTO   !

    1) Think Excel Before VBA !

         Penser Excel avant VBA !   La première question à se poser avant d'écrire un code :
    Que peut déjà réaliser Excel pour moi ?
    L'existant d'Excel pouvant souvent être bien plus efficace qu'une usine VBA
    et même plus rapide manuellement qu'un tel code !

    2) Think, But Think Object !

        Penser, mais penser objet !   Le cas ici en utilisant Selection évitant l'usine présentée initialement …

    ___________________________________________________________________________________________________________
          Je suis Paris, Manchester, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #33
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    j'ai remarqué qu'il y a beaucoup de choses qu'on est obligé de faire en vba car gain de temps incroyable par rapport à excel
    moins de nombre de clics , moins de risque d'erreur et rapidité à coder
    des fois j'ai l'impression de passer plus de temps à trouver des formules sur excel qu'a faire en vba.

  14. #34
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Cela peut s'avérer une illusion, j'en suis revenu lorsqu'un jour un gamin juste en manipulant le B-A-BA d'Excel,
    via une simple formule, un tri, etc … a terminé en moins d'une minute ce qu'un code VBA
    à l’algorithmie classique de FAC mais pas du tout "excelienne" accomplissait en bien plus de cinq minutes !

    Et évidemment en automatisant les manipulations du stagiaire l'exécution a été quasi instantanée
    comparativement aux minutes nécessaires à l'usine pourtant pensée par un ingénieur …

    Ce jour là je me suis dit : « Whow ! Il faut vraiment considérer Excel avant de partir pleine balle côté VBA ! »
    Ce que j'ai pu constater plus tard tant sur les forums français comme sur les étrangers …

    Quelqu'un connaissant bien d'abord les fonctionnalités d'Excel - formules, filtres, filtres avancés, tableau croisé dynamique,
    PowerPivot, PowerQuery, … - est bien plus à même d'éviter une usine et d'utiliser VBA à bon escient.

    Le nombre de codes rien que sur ce forum s'avérant "inutiles" après qu'un spécialiste Excel sorte la solution sans code
    via un tableau croisé dynamique par exemple …

    Donc hormis certaines exceptions - souvent liées à la mauvaise utilisation d'Excel comme un SGDB avec un volume
    de données bien trop important pour lui car il a besoin de tout charger en mémoire pour la moindre opération -
    même dans un code VBA les fonctionnalités internes d'Excel (formules de calcul, filtres, etc …) s'avèrent bien plus efficaces
    qu'un code en général VBA (interprété comparativement à l'interne d'Excel déjà compilé) à force de boucle ou autres …

    Récemment sur un forum étranger pour traiter 200 000 lignes, le code en VBA général avec une boucle avait besoin de dix minutes,
    or un autre sans boucle utilisant une formule de feuille de calculs et un tri n'en prenant pas une et accessible à un débutant
    contrairement au code initial !   Au final vu le nombre de données à contrôler dans la formule (moins de 3000)
    une boucle optimisée avec un objet externe au VBA a effectué le même travail en une bonne seconde !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  15. #35
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    j'ai une base de 5000 lignes à traiter :recherche doublons , recherche remplace avec expression réguliere ,concatener plusieurs onglets ,générer lien ect..
    le code n'etant pas totalement figé car il y a pas mal de phase de test sur la base et c'est tres facile à changer une ligne de code que des formules excel
    j'ai essayé sur excel c'est trop galère meme avec le tableau croisé dynamique .En plus travaillant avec des personnes ne connaissant pas trop de formules excel .pour eux ce qui les intéressent c'est cliquer sur un bouton et ca fait plusieurs taches .le gain de temps est énorme quand on a plein de clics de controle à faire .en tout cas j'aime bien pour l'instant.
    mais je reconnais que je ne suis pas du tout au top en vba .codage trop longue.jeureusement qu'il y a des pros pour corriger mes bétises

  16. #36
    Expert confirmé
    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
    Points : 4 174
    Points
    4 174
    Par défaut
    Marc,
    Pour ma part tu m'as déjà convaincu sur mon 1er grand post
    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 en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  17. #37
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Oui tout dépend déjà du besoin mais garder à l'esprit les deux règles peut éviter des embûches …

    Un exemple même dans cette discussion, en oubliant totalement la conception initiale,
    juste en formulant enfin clairement le besoin, il ne faut pas sortir ni de Saint Cyr
    et encore moins de Polytechnique en se basant sur la sélection, tout le reste étant inutile !

    Merci Ryu !   La suppression de lignes via une formule et un tri étant un cas d'école "excelienne" …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Selection d'une plage de cellules variables
    Par bykeman dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/06/2008, 10h20
  2. Selection d'une plage
    Par buhrne dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/03/2008, 13h29
  3. Selection d'une plage avec ligne variable
    Par ginkas31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/01/2008, 07h04
  4. Réponses: 1
    Dernier message: 30/07/2007, 19h37
  5. [VBA-E] Selection d'une plage de données problématique
    Par Fab117 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/01/2007, 14h41

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