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 :

Désélectionner en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Par défaut Désélectionner en VBA
    Bonjour,

    Malgré quelques recherches dans notre site favori je ne trouve pas la réponse à ma question.

    Pour sélectionner une plage de cellules, j'utilise
    A l'issue de la procédure, ma plage reste sélectionnée ; comment "déselectionner" cette plage ? Une commande du genre UnSelect ou Select.Nothing ou Abandon.Selection ou autre chose.

    Je remercie d'avance ceux qui me mettront sur la piste.

    Bonne journée.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Une méthode est de refaire une sélection A1 par exemple

  3. #3
    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
    Bonjour

    Pour compléter jfontaine, Il doit toujours y avoir une plage sélectionnée dans Excel, et toujours une seule cellule active dans une plage...

    Donc, "déselectionner" une plage revient à en sélectionner une autre.

    Mais peut-être (sûrement) n'y a-t-il pas besoin de sélectionner A1:A50 pour travailler avec?

    Ton code gagnerait en clarté, en rapidité et en maintenance si tu utilises des plages ou des feuilles sans les sélectionner.

    Montre ton code, et nous pourrons peut-être t'aider à l'améliorer.
    "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...
    ---------------

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Par défaut
    Bonjour,

    Merci à tous les deux pour vos réponses.

    Quelques précisions au sujet de ce que j'ai à faire. Je programme en VBA dans Access depuis plusieurs années mais je n'ai jamais programmé dans Excel (j'utilise Office 2003 après 97 et 2000).

    Je trouve assez perturbant que les méthodes soient différentes ; exemples : Find ne fonctionne pas de la même façon, il semble que pour définir un critère de recherche il faille utiliser What alors que j'utilise Like dans Access, etc... J'ai l'impression de devoir réapprendre le VBA !

    Mes premiers essais dans Excel semblait montrer qu'il est obligatoire de sélectionner une plage pour effectuer une recherche, mais cette plage restait sélectionnée en fin de Sub (d'où ma question comment déselectionner). En fait j'aurais dû penser qu'il doit oujours y avoir une plage (ou une cellule) sélectionnée, comme dans Access où le Focus est toujours placé quelque part.

    Le travail que j'ai à fournir pour lequel je n'ai pas encore de code à montrer : un certain nombre de valeurs (chiffres mais pas de texte) sont récupérées dans Excel depuis une source extérieure ; pour un traitement ultérieur, il faut complètement transformer le tableau dans une nouvelle feuille dans laquelle certaines de ces valeurs doivent être aditionnées.

    Le problème est que dans la feuille d'origine certaines cellules sont fusionnées (c'est la colonne des années). Je pense commencer par défusionner les cellules de manière à recopier le chiffre de l'année dans la ou les cellules vides ce qui servira de repère (avec Find) pour sélectionner les valeurs à aditionner dans la nouvelle feuille.

    Comme je croyais que le VBA Excel est le même que celui d'Access, je pensais faire cela en 2 temps 3 mouvements et je me suis naïvement engagé à le fournir en fin de cette semaine. Pour l'instant je patauge et toutes suggestions concernant les méthodes à utiliser seront les bienvenues.

    Merci d'avance et bonne journée.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par javelot69 Voir le message
    Mes premiers essais dans Excel semblait montrer qu'il est obligatoire de sélectionner une plage pour effectuer une recherche
    Les cas où la sélection est obligatoire sont très rares.
    Le seul cas qui me vienne en tête est le Freeze Panes (figer les volets) qui s'applique à une fenêtre (Window) où il faut avoir sélectionné la ou les cellule(s) servant de limite.

    Il est bien plus performant de travailler avec des objets de type Range auxquels on va appliquer des méthodes ou dont on va modifier des propriétés.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Par défaut
    Bonsoir,

    Merci à jfontaine, Pierre Fauconnier et Alain Tech pour les précieux conseils qui m'ont orienté dans mes recherches.

    Après quelques heures d'arrachage de cheveux et des nuits raccourcies, je suis arrivé à bout de travail à faire et je l'ai livré hier (avec 3 jours ouvrables de retard !) , je peux maintenant facturer ce travail mais la facture sera évidemment sans rapport avec le temps que cela m'a pris.

    Gros avantage de cette aventure : sans être devenu un pro du VBA dans Excel j'ai pas mal appris ; il ne me meste qu'à rentabiliser cet apprentissage.

    A bientôt sur le forum.

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    Les cas où la sélection est obligatoire sont très rares.
    Le seul cas qui me vienne en tête est le Freeze Panes (figer les volets) qui s'applique à une fenêtre (Window) où il faut avoir sélectionné la ou les cellule(s) servant de limite.
    Même dans ce cas, le FreezePanes porte sur la cellule active de la feuille active.

    Hors, il est possible de définir la cellule qui sera active dans une feuille sans activer celle-ci (ou avant de l'activer) avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      With Worksheets(2)
        .Range("B2").Copy
        .Range("B2").PasteSpecial Paste:=xlPasteAll
        Application.CutCopyMode = False
      End With
    On peut donc aussi se passer du Range.Select et du Range.Activate pour FreezePanes.

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

Discussions similaires

  1. [VBA] [Interface] BringToFront/SendToBack
    Par DarkVader dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/10/2002, 14h29
  2. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  3. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19
  4. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 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