VBA - Fonction With
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

VBA - Fonction With



  1. #1
    Varchamb

    VBA - Fonction With


    ------

    Bonjour,

    Le code suivant utilisant la fonction With de manière répétitive peut surement etre simplifié, mais il me manque le connecteur logique qui pourrait "additionner" les Range sur un seul With.

    Quelqu'un le connait il ?

    Code:
    With Sheets("Base").Range("i2:i8000")
        .NumberFormat = "# ##0.00 €"
        .HorizontalAlignment = xlRight
    End With
    
    With Sheets("En cours").Range("h2:h8000")
        .NumberFormat = "# ##0.00 €"
        .HorizontalAlignment = xlRight
    End With
    
    With Sheets("Soldé").Range("h2:h8000")
        .NumberFormat = "# ##0.00 €"
        .HorizontalAlignment = xlRight
    End With
    
    With Sheets("Annulé").Range("h2:h8000")
        .NumberFormat = "# ##0.00 €"
        .HorizontalAlignment = xlRight
    End With

    -----

  2. #2
    Pauldair

    Re : VBA - Fonction With

    Bonjour,

    Si tu mettais le nom de tes feuilles dans une matrice et que tu fasses une boucle explorant tous les éléments de cette matrice. Ça éviterait la répétition de la mise en forme.

  3. #3
    matthieu2

    Re : VBA - Fonction With

    Bonjour,

    Attention à ton premier With qui n'a pas le même Range() que les 3 autres...

    Un "And" ne fonctionnerait pas?

  4. #4
    Bluedeep

    Re : VBA - Fonction With

    Citation Envoyé par matthieu2 Voir le message
    Bonjour,

    Attention à ton premier With qui n'a pas le même Range() que les 3 autres...
    Il n'est pas valide de toute manière.

    Un "And" ne fonctionnerait pas?
    With en VBA est un "syntax sugar"; And un opérateur logique; donc, non.

  5. A voir en vidéo sur Futura
  6. #5
    Stan_94

    Re : VBA - Fonction With

    Bonjour,

    n'est-il pas plus simple (si possible) de faire d'abord la selection de toutes les plages voulue pour ensuite juste travailler sur la sélection ?
    Il me semble qu'un truc du genre Set Plage = Union(range1, range2, ... ) marche. Reste à vérifier que les ranges peuvent appartenir à plusieurs feuiles...

  7. #6
    Varchamb

    Re : VBA - Fonction With

    Bonne idée Pauldair
    Mais comment tu fais une matrice ?

  8. #7
    Varchamb

    Re : VBA - Fonction With

    Citation Envoyé par Stan_94 Voir le message
    Bonjour,

    n'est-il pas plus simple (si possible) de faire d'abord la selection de toutes les plages voulue pour ensuite juste travailler sur la sélection ?
    Il me semble qu'un truc du genre Set Plage = Union(range1, range2, ... ) marche. Reste à vérifier que les ranges peuvent appartenir à plusieurs feuiles...
    Bonne idée Stan,
    Cela donne :
    Code:
    Sub format()
    With Union(Sheets(Feuil1).Range("H2:H8000"), Sheets(Feuil2).Range("H2:H8000"), Sheets(Feuil3).Range("H2:H8000"))
        .NumberFormat = "# ##0.00 €"
        .HorizontalAlignment = xlRight
    End With
    
    End Sub
    Mais malheureusement, le message d'erreur suivant s'affiche : "incompatibilité de type" sur la ligne Union

  9. #8
    Varchamb

    Re : VBA - Fonction With

    Citation Envoyé par Pauldair Voir le message
    Bonjour,

    Si tu mettais le nom de tes feuilles dans une matrice et que tu fasses une boucle explorant tous les éléments de cette matrice. Ça éviterait la répétition de la mise en forme.
    Bonne idée Pauldair
    Mais comment tu fais une matrice ?

  10. #9
    Varchamb

    Re : VBA - Fonction With

    Citation Envoyé par Pauldair Voir le message
    Bonjour,

    Si tu mettais le nom de tes feuilles dans une matrice et que tu fasses une boucle explorant tous les éléments de cette matrice. Ça éviterait la répétition de la mise en forme.
    J'ai essayé ça :
    Code:
    Sub format()
    Dim Tableau(2) As Range
    
        Tableau(0) = Sheets(Feuil1).Range("H2:H8000")
        Tableau(1) = Sheets(Feuil2).Range("H2:H8000")
        Tableau(2) = Sheets(Feuil3).Range("H2:H8000")
    
    With Tableau(2)
        .NumberFormat = "# ##0.00 €"
        .HorizontalAlignment = xlRight
    End With
    
    End Sub
    Mais sans succès : erreur Incompatibilité de type 13 !

    Je me suis inspiré des pages suivantes :
    http://silkyroad.developpez.com/vba/tableaux/
    http://www.excel-pratique.com/fr/vba/tableaux_vba.php

  11. #10
    Stan_94

    Re : VBA - Fonction With

    Laisse tomber le "Union", à priori ça ne peux marcher que sur la même feuille ! Dommage...

    Pour le tableau, c'est presque ça, mais le With avec un tableau, je ne connais pas. En tout cas j'aurais pas mis With Tableau(2) mais With Tableau.
    (J'aurais bêtement fais un bouche For i = 0 to 2 et utilisation de Tableau(i)...

  12. #11
    Pauldair

    Re : VBA - Fonction With

    Citation Envoyé par Varchamb Voir le message
    Code:
    Sub format()
    Dim Tableau(2) As Range
    
        Tableau(0) = Sheets(Feuil1).Range("H2:H8000")
        Tableau(1) = Sheets(Feuil2).Range("H2:H8000")
        Tableau(2) = Sheets(Feuil3).Range("H2:H8000")
    Ensuite tu fais, sans utiliser "with", une boucle:

    Pour i valant de 0 à 2

    Tableau(i).monFormatNombre.mon AlignementHorizontal

    fin de la boucle for.

Discussions similaires

  1. Résolution d'une équation reliant une fonction fonction d'elle même
    Par Kelv dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 16/12/2013, 15h51
  2. la sortie d'une fonction soit un paramétre d'entrèe de la même fonction
    Par neocol dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 28/07/2013, 20h25
  3. Dérivée d'une fonction composée avec racine carrée d'une fonction au dénominateur
    Par schrom007 dans le forum Mathématiques du supérieur
    Réponses: 11
    Dernier message: 08/08/2012, 17h43
  4. Maple, fonction Odeplot comment obtenir une couleur en fonction du temps ?
    Par invite8810fee1 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 28/11/2010, 21h05
  5. Comment insérer une fonction Matlab dans les paramètres d'entrée d'une autre fonction ??
    Par inviteac36b108 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 04/01/2010, 07h16