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 :

Factoriser un bloc


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2020
    Messages : 9
    Par défaut Factoriser un bloc
    Bonjour à tous !
    Petite question de factorisation ce matin.
    J'ai un tableau dans une feuille excel dont je formate certaines cellules qui ne forment pas un même range (donc placé de façon aléatoire dans le tableau).
    J'ai créer un petit programme pour formater la devise ces cellules en question avec un point pivot et j'utilise offset pour me déplacer autour de ce point pivot et formater les cellules dont j'ai besoin.
    Super, mais n'ayant pas trouver d'équivalent à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C11,C14,C19:F20,G20,C22:G24,G25:G26,H26,J19,J21,J17,N15,N19,N23,H20,H22,H23,H24,H25,H26,I26,K19,K21,K17").Select
    Je me retrouve à faire cela:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Public Sub ChangeUSD()
     
        IndexNumber = InputBox("What's the table's number ? ", "1, 2, 3 etc...")
     
        With Ma_feuille.Range("Title" & IndexNumber)
            .Offset(2, 5) = "USD"
        End With    
     
        Ma_feuille.Range("Title" & IndexNumber).Activate
     
        With ActiveCell
            .Offset(2, 1).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
            .Offset(5, 1).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
            .Offset(11, 5).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'G20
            .Offset(16, 5).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'G25
            .Offset(17, 5).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'G26
            .Offset(11, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H20
            .Offset(13, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H22
            .Offset(14, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H23
            .Offset(15, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H24
            .Offset(16, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H25
            .Offset(17, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H26
            .Offset(17, 7).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'I26
            .Offset(8, 8).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'J17
            .Offset(10, 8).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'J19
            .Offset(12, 8).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'J21
            .Offset(8, 9).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'K17
            .Offset(10, 9).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'K19
            .Offset(12, 9).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'K21
            .Offset(6, 12).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'N15
            .Offset(10, 12).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'N19
            .Offset(14, 12).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'N23
        End With
     
        Ma_feuille.Range(ActiveCell.Offset(10, 1), ActiveCell.Offset(11, 4)).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
        Ma_feuille.Range(ActiveCell.Offset(13, 1), ActiveCell.Offset(15, 5)).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
     
    End sub
    Pourquoi avoir fait cela ? Car dans ma feuille Excel, je peux dupliquer mon tableau du nombre de fois que je veux. Donc je peux utiliser cette fonction avec n'importe quel tableau, que j'en créer 2 ou 50 tant que mon point pivot Ma_feuille.Range("Title" & IndexNumber).Activate s'adapte au nombre de tableau (grâce à IndexNumber).

    Merci d'avance pour une éventuelle aide !

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    on peut passer par des unions de range, ou une boucle couplée à deux array de positionnement

    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
    17
    18
    19
    20
    Public Sub ChangeUSD()
    Dim Lignes(), Colonnes(), i As Long
    Const TYPE_FORMAT As String = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
    Lignes = Array(2, 5, 11, 16, 17, 11, 13, 14, 15, 16, 17, 17, 8, 10, 12, 8, 10, 12, 6, 10, 14)
    Colonnes = Array(1, 1, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 8, 8, 8, 9, 9, 9, 12, 12, 12)
    IndexNumber = InputBox("What's the table's number ? ", "1, 2, 3 etc...")
     
        With Ma_feuille
            With .Range("Title" & IndexNumber)
                .Offset(2, 5) = "USD"
     
                For i = LBound(Lignes) To UBound(Lignes)
                    .Offset(Lignes(i), Colonnes(i)).NumberFormat = TYPE_FORMAT
                Next i
            End With
     
            .Range(.Range("Title" & IndexNumber).Offset(10, 1), .Range("Title" & IndexNumber).Offset(11, 4)).NumberFormat = TYPE_FORMAT
            .Range(.Range("Title" & IndexNumber).Offset(13, 1), .Range("Title" & IndexNumber).Offset(15, 5)).NumberFormat = TYPE_FORMAT
        End With
    End Sub
    Je suis parti du principe que Ma_feuille est un objet non vide, que tu as instancié dans une autre procédure

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2020
    Messages : 9
    Par défaut
    Ça marche du tonnerre !! Bien vu et merci beaucoup !

Discussions similaires

  1. Factorisation LU matrice tridiagonale par blocs
    Par djocin dans le forum Fortran
    Réponses: 3
    Dernier message: 26/10/2009, 21h27
  2. Partage de blocs mémoire entre 2 processus
    Par rolkA dans le forum Windows
    Réponses: 6
    Dernier message: 18/11/2003, 19h08
  3. Réponses: 4
    Dernier message: 06/11/2003, 10h37
  4. [VB6] mise en commentaire d'un bloc de code
    Par JuanDeLaPlaya dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/04/2003, 15h05
  5. Périphérique de bloc
    Par MAGNUM_HEAD dans le forum Administration système
    Réponses: 4
    Dernier message: 20/03/2003, 19h04

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