Pack de 81 nouvelles fonctions Excel et VBA

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Sébastien
Administrateur
Administrateur
Messages : 1'974
Appréciations reçues : 166
Inscrit le : 4 décembre 2004
Version d'Excel : 2013
Téléchargements : Mes applications
Contact :

Message par Sébastien » 2 août 2016, 18:21

Bonjour à tous,

J'ai créé un pack de nouvelles fonctions pour Excel (gratuit) sous forme de macro complémentaire (qu'il suffit donc de copier un fichier dans un répertoire d'Excel pour profiter de toutes les nouvelles fonctions).

Il y a à la fois des fonctions à utiliser sur feuille Excel et d'autres fonctions visant à simplifier les développements VBA.

Pour le moment j'ai créé 28 51 64 65 73 74 77 81 nouvelles fonctions et je souhaiterai déjà savoir si c'est quelque chose qui vous intéresse ou non et si vous seriez prêt à utiliser ces nouvelles fonctions.

Sachez que vous pouvez également me faire vos suggestions de fonctions ici ou ici, certaines seront retenues :wink:

EDIT :

Pour la liste des fonctions ou pour télécharger la macro complémentaire, c'est ici :
www.excel-pratique.com/fr/fonctions-complementaires.php

Pour la fonction ColorBox, c'est ici :
www.excel-pratique.com/fr/fonctions-complementaires/colorbox-excel.php
colorbox.jpg
colorbox.jpg (38.95 Kio) Vu 16243 fois
Pour la fonction DatePicker, c'est ici :
www.excel-pratique.com/fr/fonctions-complementaires/date-picker.php
excel-date-picker.jpg
excel-date-picker.jpg (53.07 Kio) Vu 7916 fois
Pour la fonction d'envoi d'emails, c'est ici :
www.excel-pratique.com/fr/fonctions-complementaires/mail.php
exemple-email-excel.jpg
exemple-email-excel.jpg (62.17 Kio) Vu 4547 fois
16 membres du forum aiment ce message.
Sébastien
p
patrick1957
Passionné d'Excel
Passionné d'Excel
Messages : 3'159
Appréciations reçues : 31
Inscrit le : 24 août 2015
Version d'Excel : 2007-2010-2016 PC

Message par patrick1957 » 2 août 2016, 18:37

Bonjour,

très bonne idée !!!

Je vote pour :)

P.
1 membre du forum aime ce message.
Je fais du géocaching et vous ?
Indentez vos codes VBA, ---> http://www.oaltd.co.uk/Indenter/Default.htm
A lire pour les débutants: http://www.xlerateur.com/divers/2010/05 ... nnees-612/
Avatar du membre
fred2406
Membre impliqué
Membre impliqué
Messages : 1'941
Appréciations reçues : 29
Inscrit le : 13 mai 2014
Version d'Excel : 2007-201364bits-2011MAC

Message par fred2406 » 2 août 2016, 19:19

Bonjour Sébastien
bonjour le fil
pourquoi ne pas aussi revoir certaines fonctions qui étaient présentent dans MOREFUNC et qui ne tourne plus sur des versions récente d'excel ???
fred
Je ne réponds pas aux M.P. non sollicités.
Fred
a
andrea73
Membre impliqué
Membre impliqué
Messages : 1'128
Inscrit le : 18 septembre 2015
Version d'Excel : 2013 FR

Message par andrea73 » 2 août 2016, 19:41

Bonjour Sébastien (le Forum)

Très bonne idée en effet...
Sébastien a écrit :pack de nouvelles fonctions pour Excel (gratuit) sous forme de macros complémentaires
pourquoi pas en fonctions simples ?

Concernant la gestion des tableaux je suppose que tu parles des tableaux VBA !

Des idées... ?

Fonctions simples de conversions de bases, Fonctions de gestions des heures/dates plus sympas que celles d'Excel
en fonctions Excel et/ou VBA

PremierJour(nomDuJour, ouChercher) qui renvoie le 1er jour
=> nomDuJour pourrait être une constante Lundi,Mardi...
=> ouChercher pourrait être une autre constante du style semaine, mois, année
PremierWeekEnd(ouChercher) qui renvoie le 1er week-end of course
PremierJourAnnee

et évidement leurs pendants inversés DernierJour, DernierWeekEnd, DernierJourAnnée

....

Petit détail... dans ta copie écran des fonctions, j'ai remarqué que tu utilises UnderScore "_" pour le nom de tes fonctions, personnellement je n'utilise jamais ce caractère... je trouve qu'il nuit à la lecture ::~ mais ce n'est que mon avis ;;)

En tout cas... bonne idée et surtout bon travail ! Merci pour toutes les évolutions passés, actuelles et à venir de ce forum ! :D

Cordialement
Andréa73
Avatar du membre
bouben
Membre impliqué
Membre impliqué
Messages : 1'494
Appréciation reçue : 1
Inscrit le : 25 août 2014
Version d'Excel : 2010

Message par bouben » 2 août 2016, 19:46

Bonjour à tous,

Très bonne idée !

J'ajouterais également des procédures génériques (ex : envoi de mails, qui revient en permanence sur le forum)

Perso, j'utilise un stock de code standard, qui sert régulièrement, et qui pourrait enrichir cette bibliothèque.

Bonne soirée

Bouben
'*************************************************************
'Vérifie onglet existe dans un classeur (fonction générique)
'*************************************************************
Public Function OngletExist(poWB As Workbook, psNom As String) As Boolean

    Dim oSh As Worksheet
    Dim lErr As Long
    Dim sErr As String
    
    On Error Resume Next
    Set oSh = poWB.Worksheets(psNom)
    lErr = Err.Number
    sErr = Err.Description
    On Error GoTo 0
    
    If lErr = 0 Then
        OngletExist = True
    ElseIf lErr = 9 Then
        OngletExist = False
    Else
        MsgBox "Erreur n°" & lErr & vbCrLf & sErr, vbExclamation
    End If
    
    Set oSh = Nothing
    
End Function
'***************************************
'Vérifie clé existe dans collection
'***************************************
Public Function CleExist(pcol As Collection, psCle As String) As Boolean

    Dim oTmp As Object
    Dim lErr As Long
    Dim sErr As String
    
    On Error Resume Next
    Set oTmp = pcol(psCle)
    lErr = Err.Number
    sErr = Err.Description
    On Error GoTo 0
    
    If lErr = 0 Then
        CleExist = True
    ElseIf lErr = 5 Then
        CleExist = False
    Else
        MsgBox "Erreur n°" & lErr & vbCrLf & sErr, vbExclamation
    End If
    
    Set oTmp = Nothing
    
End Function
'***************************************
'Vérifie clé existe dans collection (2)
'***************************************
public Function CleExist(pcol As Collection, psCle As String) As Boolean

    Dim sVal As String
    Dim lErr As Long
    Dim sErr As String
    
    On Error Resume Next
    sVal = pcol(psCle)
    lErr = Err.Number
    sErr = Err.Description
    On Error GoTo 0
    
    If lErr = 0 Then
        CleExist = True
    ElseIf lErr = 5 Then
        CleExist = False
    Else
        MsgBox "Erreur n°" & lErr & vbCrLf & sErr, vbExclamation
    End If
    
End Function
'procédure générique : encadre une plage de cellules
Private Sub Encadrer(poOnglet As Worksheet, psPlage As String)

    poOnglet.Select
    poOnglet.Range(psPlage).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub
Public Function NumeroSemaine(pdtDate As Date) As Integer

    NumeroSemaine = WorksheetFunction.WeekNum(pdtDate, 2)
    
End Function
'premier jour d'une semaine donnée
'http://www.generation-nt.com/reponses/vba-excel-trouver-premier-jour-039-entraide-3192151.html
Public Function LundiSem(SEMAINE As Integer, Optional ANNEE As Integer) As Date
    If ANNEE = 0 Then ANNEE = Year(Date)
    LundiSem = 7 * SEMAINE + DateSerial(ANNEE, 1, 3) - _
    Weekday(DateSerial(ANNEE, 1, 3)) - 5
End Function
Public Function LettreColonne(NumCol As Integer) As String
Dim reste, quotient As Long
quotient = Int(NumCol / 26)
reste = NumCol Mod 26
If quotient = 0 And reste = 0 Then
    Exit Function
End If
If quotient = 0 Then
    LettreColonne = Chr(64 + reste)
Else
    If reste = 0 Then
        quotient = quotient - 1
        If quotient = 0 Then
            LettreColonne = Chr(64 + 26)
        Else
            LettreColonne = Chr(64 + quotient) & Chr(64 + 26)
        End If
    Else
        LettreColonne = Chr(64 + quotient) & Chr(64 + reste)
    End If
End If
End Function
Public Function ChoixDossier() as String 

    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ActiveWorkbook.Path & "\"
        .Show
        If .SelectedItems.Count > 0 Then
           ChoixDossier = .SelectedItems(1)
        Else
           ChoixDossier = ""
        End If
    End With

End Function
Avatar du membre
pierrep56
Membre dévoué
Membre dévoué
Messages : 909
Appréciations reçues : 110
Inscrit le : 18 juin 2014
Version d'Excel : 2016

Message par pierrep56 » 2 août 2016, 19:54

Bonjour à tous,
Si ça intéresse, je me suis écrit une dll pour la gestion des variables tableaux (tri, sélection, désélection, combobox liées, ...).
Il suffirait que j'écrive la doc qui va avec
Pierre
Avatar du membre
fred2406
Membre impliqué
Membre impliqué
Messages : 1'941
Appréciations reçues : 29
Inscrit le : 13 mai 2014
Version d'Excel : 2007-201364bits-2011MAC

Message par fred2406 » 2 août 2016, 19:58

Bonjour bouben
bonjour le fil
en ce qui me concerne pour convertir le numero de colonne en Lettre j'utilise :
lettre = Split(Columns(numCol).Address(ColumnAbsolute:=False), ":")(1)
pour ce qui est bordures je fais comme ceci :
Sub Encadrer(poOnglet As Worksheet, psPlage As String)
With poOnglet.Range(psPlage).Borders  'sans rien derrière !
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
End Sub
fred
Je ne réponds pas aux M.P. non sollicités.
Fred
Avatar du membre
Sébastien
Administrateur
Administrateur
Messages : 1'974
Appréciations reçues : 166
Inscrit le : 4 décembre 2004
Version d'Excel : 2013
Téléchargements : Mes applications
Contact :

Message par Sébastien » 2 août 2016, 20:21

Merci pour vos messages, je vais certainement retenir quelques idées :wink:
fred2406 a écrit :pourquoi ne pas aussi revoir certaines fonctions qui étaient présentent dans MOREFUNC et qui ne tourne plus sur des versions récente d'excel ???
C'est une idée mais il faudrait me lister quelles sont les fonctions qui te paraissent intéressantes et qu'est-ce qu'elles font exactement ...
andrea73 a écrit :
Sébastien a écrit :pack de nouvelles fonctions pour Excel (gratuit) sous forme de macros complémentaires
pourquoi pas en fonctions simples ?
L'idée est de simplifier les choses au maximum : 1 seule installation rapide pour avoir toutes les fonctions (+ des mises à jour facilitées puisqu'il suffit de remplacer le fichier)

Ca me paraît d'autant plus intéressant pour les utilisateurs qui n'utilisent pas le VBA (ce n'est pas forcément simple pour eux de devoir aller copier à chaque fois la fonction qui les intéresse dans un nouveau module et pour chaque nouveau classeur).

Note que certaines fonctions VBA sont disponibles dans les astuces VBA.
andrea73 a écrit :j'ai remarqué que tu utilises UnderScore "_" pour le nom de tes fonctions, personnellement je n'utilise jamais ce caractère... je trouve qu'il nuit à la lecture
C'est amusant, je pense au contraire que les _ facilitent la lecture :D

C'est également une habitude du PHP où les _ sont très utilisés dans les noms des fonctions.
Sébastien
Avatar du membre
fred2406
Membre impliqué
Membre impliqué
Messages : 1'941
Appréciations reçues : 29
Inscrit le : 13 mai 2014
Version d'Excel : 2007-201364bits-2011MAC

Message par fred2406 » 2 août 2016, 21:05

RE
faut que je retrouve celle qui ne fonctionnent plus concernant morefunc....
sinon autre idées des fonctions logiques :
Public Function logique_XOR(x As Long, y As Long)
    logique_XOR = x Xor y
End Function
 
Public Function logique_NOT(x As Long)
     logique_NOT = Not x
End Function
 
Public Function logique_AND(x As Long, y As Long)
    logique_AND = x And y
End Function
 
Public Function logique_OR(x As Long, y As Long)
    logique_OR = x Or y
End Function
Edit : après vérification ces fonctions existent déjà sur excel 2013 mais pas sur 2007 ... mais je ne sais pas si c'est une nouveauté de 2013 ou si 2010 proposait déjà ces fonctions logiques...
Je ne réponds pas aux M.P. non sollicités.
Fred
e
egg
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 6 mars 2015
Version d'Excel : 2010 FR

Message par egg » 2 août 2016, 21:45

Bonsoir Sébastien et au fil !
Comme d'habitude, c'est une bonne idée !
Pour ma part, je suis preneur en ce qui concerne VBA
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message