VBA : Transformer du texte en numérique

Cette petite fonction sans prétention permet de transformer une chaine de caractères en valeur numérique. « Quoi de nouveau ! » me direz-vous ?
A la différence des fonctions natives de types Val(), CDbl() et autre, cette fonction épure tous les caractères non numérique en tenant compte du signe et du séparateur décimal.

Function fSupprimerAlpha(mValeur As Variant) As Variant 
'------------------------------------------------------ 
' Procedure   : fSupprimerAlpha / Function 
' Author      : fabrice CONSTANS (MVP) 
' Date        : 03/06/2012 ' Modified : 
' Description : épure une chaine de caractère pour retourner une valeur numérique 
'      tient compte du sép. décimal et des + et - 
' Parameters  : mValeur contient la valeur à transformer 
' Return Value : retourne une valeur numérique valide 
'------------------------------------------------------ 
Dim i As Integer 

   If IsNull(mValeur) Or Len(mValeur) = 0 Then 
      fSupprimerAlpha = Null 
      Exit Function 
   End If 

   ' à inverser suivant le type de séparateur utilisé 
    mValeur = Replace(mValeur, ",", ".") 
    ' supprime tous les caracteres alpha 
    For i = 1 To Len(mValeur) 
       ' tout ce qui n'est pas numérique sauf +,- et sepérateur dec. 
       If Not IsNumeric(Mid(mValeur, i, 1)) And _
            Not Mid(mValeur, i, 1) Like " *[,,.]*" And _ 
            Not Mid(mValeur, i, 1) Like "*[+,-]*" Then 
          ' remplace par un espace 
          mValeur = Replace(mValeur, Mid(mValeur, i, 1), " ") 
       End If 
    Next ' renvoi la nouvelle valeur sans les espaces 
    fSupprimerAlpha = Replace(mValeur, " ", "") 
End Function

Vous pouvez facilement y faire appel depuis une requête par exemple.

Bonne utilisation !

Astuce PC : Mes ports USB ne sont plus reconnus

Comme souvent le lecteur de cartes tout-en-un du poste de ma femme est en rideau. Les unités n’apparaissent pas sur le poste de travail. Après une recherche sur Internet je trouve une manip qui semble débile à sa lecture mais qui fait fureur tant les réponses positives sont nombreuses. Cette manipulation est très simple et ne nécessite aucune manipulation du système, et le plus curieux c’est qu’elle fonctionne !

  • Éteignez votre pc.
  • Mettez l’interrupteur de l’alimentation sur Off (à l’arrière du pc).
  • Débranchez le câble d’alimentation.
  • Sur portable débranchez la batterie.
  • Appuyez pendant 15 secondes sur le bouton de démarrage (oui sans n’avoir rien rebranché !).
  • Reconnectez votre câble d’alimentation.
  • Remettez l’interrupteur de l’alimentation sur On.
  • Démarrez votre pc.

Normalement les unités du lecteur de cartes sont revenus. Cette manipulation vide l’électricité résiduelle de la carte mère.

Bonne utilisation !

VBA : Formater une adresse postale

Voici un petit code qui permet de formater une adresse postale. Il est à insérer en dessous des lignes d’options (Option Compare…) d’un module standard (pas dans un module de classe, formulaire ou état) :

Valeur saisie : 115, impasse de la petite reine
Valeur formatée : 115, Impasse de la Petite Reine

Const particules= " de ; du ; d'; des ; l'; la ; le ; les ; en " 
'rajouter les mots en minuscule à ne pas mettre en majuscule 

Public Function formatAdresse(strAdresse As Variant) As String 
   Dim strA As String Dim arrParticules() As String 
   Dim i As Long 

   If IsNull(strAdresse) Then Exit Function 
   'si c'est null on ne traite pas 

   If strAdresse = "" Then Exit Function 
   'si c'est vide on ne traite pas 

   arrParticules = Split(particules, ";") 
   strA = StrConv(strAdresse, vbProperCase)
   'toutes les premieres lettres en majuscule
 
   For i = 0 To UBound(arrParticules) 
      strA = Replace(strA, arrParticules(i), LCase(arrParticules(i))) 
      'supprime la majuscule 
   Next 
   formatAdresse = strA 
End Function

On renseigne la constante avec les mots que l’on ne veut pas mettre en majuscule.
1) le strconv() met toutes les 1ère lettre de chaque mot en majuscule.
2) la boucle For remplace les mots trouvés qui correspondent à ceux de la constante.

L’appel de la fonction

Sélectionner la zone de texte de l’adresse que j’ai nommé Adresse, l’évènement Après MAJ et mettre ceci :

Private Sub Adresse_AfterUpdate() 
     Me.Adresse.Value = formatAdresse(Me.Adresse.Value) 
End Sub

« Adresse » est le nom de la zone de texte. Elle doit être remplacée par le nom de celle que vous souhaitez traiter.

Bonne utilisation !

Argentek une application de gestion de comptes gratuite pour PC

Suite à l’annonce de Microsoft de l’arrêt de la commercialisation et du support de Money, j’ai réalisé avec Microsoft Access l’application de gestion de comptes bancaires Argentek.

Cette application est libre d’utilisation mais ne peut être vendue ou faire l’objet d’une offre commerciale quelconque.

Suite à des abus de certains utilisateurs qui se sont appropriés le code sans mon autorisation, l’application a été verrouillée.

Quelques fonctionnalités :

  • Multi compte
  • Solde en temps réel et par opération
  • Opérations automatisées avec déclenchement à date, par mois, trimestre, semestre, annuel
  • Opération de transfert entre compte
  • Gestion des tiers et catégorie
  • Création de comptes illimitée
  • Création d’opérations illimitée
  • Sauvegarde automatisée
  • Pointage des opérations
  • Protection des opérations pointées

Bonne utilisation !

Bienvenue !

Bienvenue sur le blog de vulgarisation des logiciels Microsoft Office et VBA.

Ce blog était hébergé chez Free, mais la politique de mise à jour de leur PHP est incompatible avec les dernières versions de WordPress. J’ai donc décidé de changer d’hébergeur.

Bonne lecture !