XD blog

blog page

vba


2015-05-18 Ordonner les onglets sous Excel

On me demandait récemment comment ordonner les onglets sous Excel. Mon premier réflexe de chercher sur un moteur de recherche ordonner les onglets sous Excel. Je recopie ici le code trouver sur le site de Microsoft : Comment trier les onglets d'un classeur

Pour s'en servir, il suffit de recopier ce code dans l'éditeur VBA qui apparaît dès qu'on utilise la combinaison ALT+F11. Il faut le recopier dans la fenêtre associée à l'intitulé ThisWorkbook.


more...

2014-03-03 Styles conditionnels en VBA sous Excel

J'avais besoin de créer un tableau avec une ligne de couleur différente pour chaque jour de la semaine. J'ai d'abord essayé de me passer de programmation en VBA car je me suis dit que c'est le genre de choses que je pourrais trouver sans un menu quelconque. J'ai commencé à chercher dans les styles personnalisés, puis sur Internet mais j'ai finalement abandonné. Je suis passé au VBA et ça m'a pris une dizaine de minutes. J'ai utilisé la première ligne pour les couleurs que je souhaitais (j'ai fait ça très vite, ce n'est pas du meilleur goût) puis j'ai composé le tableau, une première colonne pour les dates, une seconde qui contient le jour de la semaine (obtenu par formule). C'est ce numéro qui indiquera la couleur.

Puis j'ai écrit la macro suivante :


more...

2014-02-08 Résoudre un sudoku avec Excel et VBA

Le programme que vous trouverez plus bas résoud les sudoku. Je ne suis pas sûr qu'il faille rappeler les régles de ce jeu mais comme elles sont simples :

un sudoku

Et le programme Excel que j'ai fait se présente sous la forme :

un sudoku


more...

2014-01-30 Equation différentielle stochastique sous Excel avec VBA

C'est un TD que je donnais à l'ENSAE il y a quelques années. Mais le VBA n'a pas trop changé depuis cette époque, tout du moins comparé à d'autres langages. L'équation différentielle stochastique de Black et Scholes apparaît souvent lorsqu'on parle de finance :

 \frac{dY_t}{Y_t} = r dt + \sigma dW_t

Avec :

On cherche à résoudre numériquement cette équation avec Excel. C'est un peu le début de l'implémentation d'un pricer sous Excel.


more...

2013-09-08 Convertir un tableau Excel au format HTML

Le code suivant convertit un tableau Excel au format HTML puis stocke le résultat dans le presse-papier (il suffit donc de faire CTRC+V pour le coller où on veut). La macro convertit la zone sélectionnée au format HTML. Voici ce qu'elle donne :

objectifPythonVBA
test if / elseif .. Then / else / end if
bouclefor .. in ..for .. = .. to .. / next
fonctiondeffonction / end function

Le code de la fonction doit être copié/collé dans un module (ALT+F11 pour voir le code VBA associé à la feuille). Je n'ai pas implémenté beaucoup de styles mais la fonction est facilement modifiable.

' code à copier dans la feuille Excel
Function ColorToHtml(ByVal value As String) As String
    Dim scolor As String
    scolor = Trim(Hex(value))
    While Len(scolor) < 6
        scolor = "0" + scolor
    Wend
    scolor = Mid(scolor, 3, 4) + Mid(scolor, 1, 2)
    ColorToHtml = "#" + scolor
End Function

Sub range_html_to_cliboard()
    Set rge = Selection
    Dim res, line, ce As String
    res = "<table>" + Chr(10)
    
    For i = 1 To rge.Rows.Count
        line = "<tr>"
        For j = 1 To rge.Columns.Count
            ce = "<td style="""
            If rge(i, j).Interior.color Then
                ce = ce + "background-color:" + ColorToHtml(rge(i, j).Interior.color) + ";"
            End If
            If rge(i, j).Font.color Then
                ce = ce + "color:" + ColorToHtml(rge(i, j).Font.color) + ";"
            End If
            If rge(i, j).Font.Bold Then
                ce = ce + "font-weight:bold;"
            End If
            ce = ce + """>"
            ce = ce + rge(i, j).Text + "</td>"
            line = line + ce
        Next
        line = line + "</tr>"
        res = res + line + Chr(10)
    Next
    
    res = res + "</table>" + Chr(10)
    
    ClipBoard_SetData (res)
End Sub

La fonction ne marche pas tel quel sur les tableaux créés avec des styles, ni même avec une liste filtrée. Pour cela, il faut copier la zone désirée puis faire deux collages spéciaux, le formatting et les valeurs, au même endroit. On sélectionne ensuite la zone collée puis on appelle la macro décrite ci-dessus.


more...

2013-01-26 Compter le nombre de cellules d'une couleur sous Excel

On cherche à compter le nombre de cellules d'une couleur spécifique sous Excel dans une plage de données. On peut considérer l'exemple suivant qui fait apparaître un rectangle contenant des cases de couleurs différentes. La première ligne contient toutes les couleurs une seule fois, la seconde ligne contient le nombre de cellules dans le rectangle de la même couleur que la case du dessus.

On veut pouvoir écrire une formule du type :

=NbColorSameAs($B$6:$D$11;B1)
Il n'est pas possible de s'en sortir sans programmer soit même cette fonction. Pour cela, il faut : Le document Excel est maintenant prêt, il suffit d'insérer la première formule insérée plus haut dans ce blog (vous pourrez trouver un exemple ici).


more...

Xavier Dupré