Comment utilisez-vous les tableaux croisés dynamiques?

Bonjour à tous,

Si vous n'utilisez pas les tableaux croisés dynamiques (TCD), c'est le moment de s'y mettre.

Si vous les utilisez, je serais curieux de savoir pour quel usage et si vous avez des questions, recommandations, etc.
Je prépare une nouvelle formation et j'aimerais incorporer un maximum d'informations qui vous seront utiles directement.

N'hésitez-pas à partager ci-dessous.

Pour ceux qui n'ont aucune idée de ce dont on parle, voici un petit rappel:
https://www.xlerateur.com/utilitaires-excel/2011/10/02/les-tableaux-croises-dynamiques-pour-les-super-nuls-en-moins-de-5-mns-1180/

A bientôt.

Gaetan

Ancrer les fenêtres dans VBE... Si, si, c'est possible

Il y a des choses comme ça, qui prennent des années à découvrir.

Parfois dans VBE, vous vous retrouvez avec des fenêtres non-ancrées qui vont dans tous les sens et qui ne se remettent jamais à leur place.

Pour ranger ces fenêtres, il y a une technique toute simple:
Outils-Options-Ancrage

excel-vba-cours-formation-ancrage

excel-vba-cours-formation-ancrage

C'est tout !

A++

Gaetan

De l'importance des variables tableaux en VBA

Voici le résultat d'un petit test de chargement en mémoire d'un grand tableau.

Je compare un chargement direct dans une variable tableau vs. un chargement cellule par cellule.

Voici le fichier.

Les résultats sont sans appels...

Et le code du fichier qui vous montre une des façons de créer un timer dans du VBA:

Sub Bouton1_Cliquer()
'Definition des variables
Dim arrPlage() As Variant
Dim t As String
Dim i As Long
Dim j As Long

'On charge directement les valeurs
t = "Début du programme : " & Application.WorksheetFunction.Text([now()] - tStart, "h:mm:ss.00")
 arrPlage = ActiveSheet.UsedRange.Value
t = t & vbCrLf & "Fin mise en mémoire usedrange values: " & _
Application.WorksheetFunction.Text([now()] - tStart, "h:mm:ss.00")

'On charge les formules
arrPlage = ActiveSheet.UsedRange.FormulaR1C1
t = t & vbCrLf & "Fin mise en mémoire usedrange formula: " & _
Application.WorksheetFunction.Text([now()] - tStart, "h:mm:ss.00")

'on charge en lisant cellule par cellule
For i = LBound(arrPlage, 1) To UBound(arrPlage, 1)
    For j = LBound(arrPlage, 2) To UBound(arrPlage, 2)

        arrPlage(i, j) = ActiveSheet.Cells(i, j).Value
    
    Next
Next
t = t & vbCrLf & "Fin mise en mémoire par lecture de chaque cellule : " & _
Application.WorksheetFunction.Text([now()] - tStart, "h:mm:ss.00")

'on affiche le resultat.
MsgBox t

End Sub

Pour en savoir plus sur les variables tableaux, vous pouvez consulter cette formation:
https://www.xlerateur.com/collection-vba-avance-volume-3-les-variables-tableaux-en-vba-2/

A bientôt

Gaetan