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 :

"With objet déclaration" comment faire pour que la déclaration soit égale à l'objet EXACTEMENT ? [XL-2010]


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
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Par défaut "With objet déclaration" comment faire pour que la déclaration soit égale à l'objet EXACTEMENT ?
    Bonjour,
    Tout est dans le titre (un peu long )

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With maFeuille.Cells(ligne, colonne)
         maFeuille.Range(maFeuille.Cells(ligne,colonne), .offset(0,3)).Insert shift:=xldown
    End With
    C'est un simple exemple, mais en gros la question c'est comment éviter de réécrire maFeuille.Cells(ligne,colonne), car on ne peut pas rien écrire.
    On peut certes ici mettre juste .Offset(0, 0) et basta, mais j'aimerais quand même savoir (de manière générale) s'il y a un mot, genre Me (j'ai essayé ça marche pas ^^) pour exprimer ça.

    Je sais pas si j'explique bien

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Si tu aimes te faire mal, tu peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        With maFeuille.Cells(ligne, colonne)
           maFeuille.Range(.Address, .Offset(0, 3)).Insert shift:=xlDown
        End With
    mais, pour ma part, j'écrirais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        maFeuille.Cells(ligne, colonne).Resize(1, 4).Insert shift:=xlDown
    ou, si nécéssité du With
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        With maFeuille.Cells(ligne, colonne)
           .Resize(1, 4).Insert shift:=xlDown
        End With
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Par défaut
    certes, en effet, mais de manière générale existe-t-il quelque chose pour reprendre l'objet du with sans rien mettre derrière mais sans répéter l'objet en entier non plus (with étant nécessaire dans mon hypothèse, oui)

    Par exemple, là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With newTextBox.TextFrame2
            .TextRange.Font.Name = "Arial"
            .TextRange = "Blabla."
        End With
    J'aurais aimé écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With newTextBox.TextFrame2.TextRange
            .Font.Name = "Arial"
            ?XX? = "Blabla."
        End With
    Y a-t-il qqchose qui existe pour le ?XX?

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Y a-t-il qqchose qui existe pour le ?XX?
    La seule chose qui peut aller là, c'est le nom d'une méthode ou d'une propriété de l'objet déclaré dans le with.

    Le bloc with ne sert qu'à raccourcir les affectations des propriétés ou l'appel d'une méthode.

    donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with textbox1
         .text = "Oscar"
         .backcolor = simonac
         .enable = true
    end with
    ne fait que remplacer:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    textbox1.text = "Oscar"
    textbox1.backcolor = simonac
    textbox1.enable = true
    et rien d'autre. C'est uniquement une structure cosmétique qui évite une fois de temps en temps un peu d'écriture.

    Même que dans VB2012 (probablement pas dans Excel), l'IntelliSense, va probablement t'afficher Textbox1, juste en écrivant le t. Cela fait que rendu-là l'intérêt d'utiliser un bloc With pour épargner de la frappe est presque nul. Il ne reste que la beauté de la présentation et une légère amélioration de la lisibilité pour justifier un bloc with.

    Donc, le bloc with devrait être très bas dans tes priorités.

  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 clementmarcotte Voir le message
    C'est uniquement une structure cosmétique qui évite une fois de temps en temps un peu d'écriture.
    Bonjour,

    Je ne suis pas d'accord.
    L'utilisation du With permet au compilateur de se référer à un objet sans devoir recalculer sa définition.
    Dans beaucoup de cas, ça permet un gain de temps appréciable sur de grosses boucles.
    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
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    Dans beaucoup de cas, ça permet un gain de temps appréciable sur de grosses boucles.
    Si tu avais un exemple concret j'aimerais bien faire le test.
    Pour ma part, je n'utilise jamais le With... et je m'en porte très bien.
    Par contre, si vraiment ça peut accélérer certains processus, je suis prêt à revoir ma façon de faire, malgré les vieilles habitudes ...

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/02/2013, 16h18
  2. Comment faire pour que le focus soit à la fin d'un texte dans une textbox ?
    Par gryffondor8392 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/02/2011, 21h07
  3. [XML] Fichier XML. Comment faire pour que chaque balise soit différente ?
    Par Jusd'abricot dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/11/2009, 16h42
  4. Réponses: 5
    Dernier message: 08/12/2006, 18h26
  5. CSS: comment faire pour que mes coins soit arrondi
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 16/02/2006, 12h08

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