Mais arrêtez-le !

excel_faites_le_parler 1
Suite à mon précédent post, voici une autre utilisation de la fonction speech.

Vous pouvez télécharger un petit fichier exemple.

Il s'agit de la même fonction que l'on active ou que l'on désactive en changeant le True en False :

Sub faites_parler_excel()
Application.Speech.SpeakCellOnEnter = True
End Sub

Et pour désactiver :
arretez_le 1

Sub arretez_le()
Application.Speech.SpeakCellOnEnter = False
End Sub

A bientôt.

Gaetan

Ajout d’images dans une cellule

image-donnees-table-excel
Bonjour à tous,

Suite à la question d'une de mes étudiantes sur la gestion d'images dans une table Excel, j'avais pensé à cette solution, mais je viens de découvrir une alternative assez intéressante (liens en anglais ici et ).

Voici donc une petite explication vidéo sur la réalisation de ce tour de passe-passe.
Voici aussi le fichier avec le code VBA qui permet d'automatiser le processus.

Il y a beaucoup d'améliorations possibles à ce code : ajout automatique des noms des images, ajout des commentaires dans une cellule à droite de la cellule du lien, gestion des propriétés de l'image, transformation en macro complémentaire, etc.

N'hésitez pas à exprimer vos besoins et je ferai de mon mieux pour y répondre.

A bientôt.

Gaëtan

Excel VBA – ActiveSheet.ShowAllData, La 1004 : “La méthode ShowAllData de la classe Worksheet a échoué”

Bonjour à tous,

Si vous avez déjà eu à utiliser ShowAllData en VBA, vous avez certainement rencontré ceci !

ShowAllData-Excel-VBA-1004

Voici un petit résumé de ce qui se passe...Du moins, de ce que j'ai pu en comprendre jusqu'à présent !
Voici le lien vers le fichier

Le code utilisé est celui-ci :
ActiveSheet.ShowAllData ou encore Feuil1.ShowAllData
qui à la lecture pourrait vouloir dire : afficher les données de la feuille active ou de la feuil1.
Mais en fait, il vaudrait mieux lire : afficher les données du filtre de la cellule active.

En effet, soit un tableau filtré comme ceci :
Table-ShowAllData-Excel-VBA-1004

Le code suivant ne fonctionnera pas, car la cellule active n'est pas sur le tableau.
Sub SubShowAllData_fonctionne_pas()
Range("H1").Select
Feuil1.ShowAllData
End Sub

De fait, celui-ci fonctionnera mieux, mais je ne le comprends pas, car ca fonctionnera même si on se trouve sur une autre feuille !
Sub SubShowAllData_fonctionne_parfois()
Range("A1").Select
Feuil1.ShowAllData
End Sub

Mais malheureusement, il ne fonctionnera qu'une seule fois.
En effet, une fois que l'on aura tout ré-affiché, le code va afficher la même erreur, car toutes les données seront affichées.
D'où un test qui permet de savoir si le filtre est activé :
Sub ShowAllData_fonctionne_a_priori_toujours()
Feuil1.Select
Range("A1").Select
If Feuil1.FilterMode Then
Feuil1.ShowAllData
End If
End Sub

Et une solution alternative basée sur une idée de Dominique.
Celle-ci supprime et remet le filtre automatique.
Cette fonctionnalité ne fonctionne cependant pas avec des filtres avancés.
Sub Supprime_filtre_alternative()
Feuil1.Select
Range("A1").Select
If Feuil1.FilterMode Then
Feuil1.UsedRange.AutoFilter
Feuil1.UsedRange.AutoFilter
End If
End Sub

A bientôt

Gaëtan