Le double-clic du jour

Dans un userform en VBA, si vous ajoutez une image, un double-clic sur la poignée de redimensionnement va automatiquement ajuster le format du contrôle à la taille de l'image choisie!

Une fois l'image ajoutée, double-cliquez sur une des poignées de dimensionnement

Et voilà !

Sortir d'une XL'hibernation :-)

Bonjour à tous,

Profitant de cette situation exceptionnelle, je me suis mis à fond sur un nouveau logiciel qui me permet de développer et d'approfondir encore mes connaissances.
Je vous reparle très bientôt de cette application qui devrait servir à beaucoup d'entre vous !

J'ai aussi continué de développer FormXL Pro et les nouveautés seront disponible dans 4 semaines ! En savoir plus ici.

Voici quelques sujets que j'ai explorés récemment et sur lesquels je reviendrais prochainement. Je suis disponible pour des développements sur ces sujets. N'hésitez pas à m'indiquer en commentaires si vous avez des préférences :

  • Glisser-déplacer d'éléments entre de multiples listbox sur un formulaire.
  • Interaction avec php/mysql et envoi/réception de données vers un site internet et des bases de données stockées en ligne.
  • Utilisation avancée des variables tableaux pour le traitement de données mal formatées (import de données dans une variable tableau, retraitement, utilisation des Lbound et Ubound, etc.). Utile lorsque PowerQuery ne suffit pas.
  • Utilisation avancée des variables tableaux pour le traitement statistique de données, notamment pour du calcul matriciel.
  • Formulaire semi-automatisé liant une liste reprenant les éléments d'une table et une série de textbox permettant de remplir ces éléments.

Utilisation des fonctions matricielles dynamiques, qui sont absolument extraordinaires lorsqu'on les combine ensemble : FILTRE, UNIQUE, SEQUENCE, TRI, TRI.PAR, etc. Vous avez un exemple ici.

  • Filtrer dynamiquement une liste complète suivant des critères définis.
  • Faire la somme d'une cellule située sur plusieurs feuilles portant un identifiant. Par exemple, faire la somme de toutes les cellules B2 pour les feuilles Mois1, Mois2, Mois3... et rendre cette formule dynamique à l'ajout d'une nouvelle feuille (INDIRECT+SEQUENCE).
  • Suivant la même idée, faire une somme de plages en fonction d'une liste de feuilles pré-établie (SOMME+INDIRECT).
  • Faire une recherche en cascade sur plusieurs listes dépendantes (FILTRE).
  • Combiner le résultat d'une recherche dans une seule cellule (JOINDRE.TEXTE + FILTRE).

Si vous avez des besoins particuliers, je suis à votre disposition pour vous accompagner dans vos projets Excel ou VBA.

A bientôt !

Retourner la liste des macros affectées à des objets.

Avec un ami, nous sommes en train de travailler sur une nouvelle application à destination des chantiers de construction. D'ailleurs, si vous êtes dans ce domaine, n'hésitez pas à demander une démonstration.

L'outil prenant de l'ampleur, j'ai eu le besoin de documenter les macros qui sont attachées à des objets. Cette macro ne prend cependant pas en compte le code qui est automatiquement attaché à des contrôles ActiveX. Ce type de code est généralement comme ceci : NomDuControle_click.

Voici donc un petit code rapide qui permet de le faire :

Sub retourneMacroAffecteesAObject()
    Dim shp As Shape
    Dim wks As Worksheet
    Dim wksResult As Worksheet
    Dim lLigne As Long: lLigne = 1
    Set wksResult = ThisWorkbook.Worksheets.Add
    For Each wks In ThisWorkbook.Worksheets
        For Each shp In wks.Shapes
            If shp.OnAction <> "" Then
                wksResult.Range("A" & lLigne).Value = wks.name
                wksResult.Range("B" & lLigne).Value = shp.name
                wksResult.Range("C" & lLigne).Value = shp.OnAction
                wksResult.Range("D" & lLigne).Select
                wksResult.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "'" & wks.name & "'!A1", TextToDisplay:="'" & wks.name & "'!A1"
                lLigne = lLigne + 1
            End If
        Next shp
    Next wks
    wksResult.Columns("A:D").EntireColumn.AutoFit
    wksResult.Range("A1").Select
End Sub

A bientôt