Accueil > > > VBA EXCEL CONVERTIR EN NOMBRE, APPLIQUER UN FORMAT MONETAIRE OU POURCENTAGE
VBA EXCEL CONVERTIR EN NOMBRE, APPLIQUER UN FORMAT MONETAIRE OU POURCENTAGE
Information sur la source
Description
Convertir en nombre (format standard) ou appliquer un format de type monétaire (deux décimales sans symbole) ou de type pourcentage à la plage sélectionnée (cf. saisie d'écran)
Source
- Option Explicit
-
- Sub CreateCommandBar()
- 'Ajoute la barre de commandes "VB France"
-
- On Error Resume Next
- CommandBars("VB France").Delete
- On Error GoTo 0
-
- With CommandBars.Add("VB France")
- ' With .Controls.Add(msoControlButton)
- ' .Caption = " Source de données (ODBC) "
- ' .TooltipText = .Caption
- ' .OnAction = "DisplayODBCManager"
- ' End With
- With .Controls.Add(msoControlButton)
- .Caption = " Afficher la calculatrice "
- .TooltipText = .Caption
- ' .BeginGroup = True
- .OnAction = "ShowCalculator"
- End With
- With .Controls.Add(msoControlPopup)
- .Caption = " Macrocommandes "
- .BeginGroup = True
- With .Controls.Add(msoControlButton)
- .Caption = "Convertir en nombre (format standard)"
- .OnAction = "ConvertStrToDbl"
- End With
- With .Controls.Add(msoControlButton)
- .Caption = "Appliquer le format monétaire"
- .BeginGroup = True
- .OnAction = "ApplyCurrencyFormat"
- End With
- With .Controls.Add(msoControlButton)
- .Caption = "Appliquer le format pourcentage"
- .OnAction = "ApplyPercentageFormat"
- End With
- With .Controls.Add(msoControlButton)
- .Caption = "Corriger les dates enregistrées au format anglais"
- .BeginGroup = True
- .OnAction = "ModifyDateFormat"
- End With
- End With
- .Visible = True
- End With
-
- End Sub
-
- Sub ShowCalculator()
- 'Affiche la calculatrice
-
- On Error Resume Next
- Shell ("calc.exe")
-
- End Sub
-
- Sub ConvertStrToDbl()
- 'Pour la plage sélectionnée : convertir en nombre (format standard)
-
- 'Variables de traitement
- Dim myValue As Variant
- Dim myRange As Range
-
- 'Gestionnaire d'erreur
- On Error GoTo Except
-
- For Each myRange In Selection
- With myRange
- 'Conditions de conversion
- If IsNumeric(.Value) Then
- If Len(Trim(.Value)) > 0 Then
- 'Conversion avec format standard
- myValue = CDbl(.Value)
- .NumberFormat = "General"
- .Value = myValue
- End If
- End If
- End With
- Next
-
- Exit Sub
- Except:
- 'Boîte de dialogue : message d'erreur
- Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
- Err.Description & Space(6), vbCritical + vbOKOnly, " Macro de MAJ du format standard")
- End Sub
-
- Sub ApplyCurrencyFormat()
- 'Pour la plage sélectionnée : appliquer le format monétaire
- '(*) Le format est de type natif car les paramètres régionaux
- ' sont gérés de façon implicite.
-
- 'Variables de traitement
- Dim myValue As Double
- Dim myRange As Range
-
- 'Gestionnaire d'erreur
- On Error GoTo Except
-
- For Each myRange In Selection
- With myRange
- If IsNumeric(.Value) Then
- myValue = .Value
- 'Format nombre* avec deux décimales
- .NumberFormat = "#,##0.00"
- .Value = myValue
- End If
- End With
- Next
-
- Exit Sub
- Except:
- 'Boîte de dialogue : message d'erreur
- Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
- Err.Description & Space(6), vbCritical + vbOKOnly, " Macro de MAJ du format monétaire")
-
- End Sub
-
- Sub ApplyPercentageFormat()
- 'Pour la plage sélectionnée : appliquer le format pourcentage
- '(*) Le format est de type natif car les paramètres régionaux
- ' sont gérés de façon implicite.
-
- 'Variables de traitement
- Dim myValue As Variant
- Dim myRange As Range
-
- 'Gestionnaire d'erreur
- On Error GoTo Except
-
- For Each myRange In Selection
- With myRange
- If Right(.Value, 1) = "%" Then
- myValue = Left(.Value, Len(.Value) - 1)
- If IsNumeric(myValue) Then
- 'Format pourcentage* avec deux décimales
- .NumberFormat = "#,##0.00%"
- .Value = myValue / 100
- End If
- End If
- End With
- Next
-
- Exit Sub
- Except:
- 'Boîte de dialogue : message d'erreur
- Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
- Err.Description & Space(6), vbCritical + vbOKOnly, " Macro de MAJ du format pourcentage")
-
- End Sub
-
- Sub ModifyDateFormat()
- 'Pour la plage sélectionnée : corriger les dates enregistrées au format anglais.
-
- 'Variables de traitement
- Dim myDate As Date
- Dim myRange As Range
- Dim i As Long, j As Long
-
- 'Gestionnaire d'erreur
- On Error GoTo Except
-
- 'Boîte de dialogue : demande de confirmation
- i = Selection.Cells.Count
- If i = 1 Then
- If MsgBox(vbCr & "Demande de confirmation" & vbCr & vbCr & _
- "Une seule cellule est sélectionnée. Confirmez votre sélection ?" & Space(6), vbQuestion + vbYesNo, _
- " Macro de correction du type date") = vbNo Then Exit Sub
- End If
-
- For Each myRange In Selection
- If IsDate(myRange) Then
- With myRange
- 'Condition d'inversion
- If .NumberFormat = "mm/dd/yyyy" Then
- 'Mémorise la date
- myDate = .Value
- 'Transforme le type du format date
- .NumberFormat = "dd/mm/yyyy"
- 'Transforme la date en inversant les valeurs du mois et du jour
- .Value = CDate(Month(myDate) & "/" & Day(myDate) & "/" & Year(myDate))
- If Month(.Value) <> Month(myDate) Then j = j + 1
- End If
- End With
- End If
- Next
-
- 'Boîte de dialogue : nbre de dates corrigées sur nbre de cellules vérifiées
- Call MsgBox(vbCr & "Résultat du traitement :" & vbCr & vbCr & _
- j & " date(s) corrigée(s) sur " & i & " cellule(s) sélectionnée(s)." & Space(6), vbInformation + vbOKOnly, _
- " Fonction de correction du type date")
-
- Exit Sub
- Except:
- 'Boîte de dialogue : message d'erreur
- Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
- Err.Description & Space(6), vbCritical + vbOKOnly, " Fonction de correction du type date")
- End Sub
Option Explicit
Sub CreateCommandBar()
'Ajoute la barre de commandes "VB France"
On Error Resume Next
CommandBars("VB France").Delete
On Error GoTo 0
With CommandBars.Add("VB France")
' With .Controls.Add(msoControlButton)
' .Caption = " Source de données (ODBC) "
' .TooltipText = .Caption
' .OnAction = "DisplayODBCManager"
' End With
With .Controls.Add(msoControlButton)
.Caption = " Afficher la calculatrice "
.TooltipText = .Caption
' .BeginGroup = True
.OnAction = "ShowCalculator"
End With
With .Controls.Add(msoControlPopup)
.Caption = " Macrocommandes "
.BeginGroup = True
With .Controls.Add(msoControlButton)
.Caption = "Convertir en nombre (format standard)"
.OnAction = "ConvertStrToDbl"
End With
With .Controls.Add(msoControlButton)
.Caption = "Appliquer le format monétaire"
.BeginGroup = True
.OnAction = "ApplyCurrencyFormat"
End With
With .Controls.Add(msoControlButton)
.Caption = "Appliquer le format pourcentage"
.OnAction = "ApplyPercentageFormat"
End With
With .Controls.Add(msoControlButton)
.Caption = "Corriger les dates enregistrées au format anglais"
.BeginGroup = True
.OnAction = "ModifyDateFormat"
End With
End With
.Visible = True
End With
End Sub
Sub ShowCalculator()
'Affiche la calculatrice
On Error Resume Next
Shell ("calc.exe")
End Sub
Sub ConvertStrToDbl()
'Pour la plage sélectionnée : convertir en nombre (format standard)
'Variables de traitement
Dim myValue As Variant
Dim myRange As Range
'Gestionnaire d'erreur
On Error GoTo Except
For Each myRange In Selection
With myRange
'Conditions de conversion
If IsNumeric(.Value) Then
If Len(Trim(.Value)) > 0 Then
'Conversion avec format standard
myValue = CDbl(.Value)
.NumberFormat = "General"
.Value = myValue
End If
End If
End With
Next
Exit Sub
Except:
'Boîte de dialogue : message d'erreur
Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
Err.Description & Space(6), vbCritical + vbOKOnly, " Macro de MAJ du format standard")
End Sub
Sub ApplyCurrencyFormat()
'Pour la plage sélectionnée : appliquer le format monétaire
'(*) Le format est de type natif car les paramètres régionaux
' sont gérés de façon implicite.
'Variables de traitement
Dim myValue As Double
Dim myRange As Range
'Gestionnaire d'erreur
On Error GoTo Except
For Each myRange In Selection
With myRange
If IsNumeric(.Value) Then
myValue = .Value
'Format nombre* avec deux décimales
.NumberFormat = "#,##0.00"
.Value = myValue
End If
End With
Next
Exit Sub
Except:
'Boîte de dialogue : message d'erreur
Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
Err.Description & Space(6), vbCritical + vbOKOnly, " Macro de MAJ du format monétaire")
End Sub
Sub ApplyPercentageFormat()
'Pour la plage sélectionnée : appliquer le format pourcentage
'(*) Le format est de type natif car les paramètres régionaux
' sont gérés de façon implicite.
'Variables de traitement
Dim myValue As Variant
Dim myRange As Range
'Gestionnaire d'erreur
On Error GoTo Except
For Each myRange In Selection
With myRange
If Right(.Value, 1) = "%" Then
myValue = Left(.Value, Len(.Value) - 1)
If IsNumeric(myValue) Then
'Format pourcentage* avec deux décimales
.NumberFormat = "#,##0.00%"
.Value = myValue / 100
End If
End If
End With
Next
Exit Sub
Except:
'Boîte de dialogue : message d'erreur
Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
Err.Description & Space(6), vbCritical + vbOKOnly, " Macro de MAJ du format pourcentage")
End Sub
Sub ModifyDateFormat()
'Pour la plage sélectionnée : corriger les dates enregistrées au format anglais.
'Variables de traitement
Dim myDate As Date
Dim myRange As Range
Dim i As Long, j As Long
'Gestionnaire d'erreur
On Error GoTo Except
'Boîte de dialogue : demande de confirmation
i = Selection.Cells.Count
If i = 1 Then
If MsgBox(vbCr & "Demande de confirmation" & vbCr & vbCr & _
"Une seule cellule est sélectionnée. Confirmez votre sélection ?" & Space(6), vbQuestion + vbYesNo, _
" Macro de correction du type date") = vbNo Then Exit Sub
End If
For Each myRange In Selection
If IsDate(myRange) Then
With myRange
'Condition d'inversion
If .NumberFormat = "mm/dd/yyyy" Then
'Mémorise la date
myDate = .Value
'Transforme le type du format date
.NumberFormat = "dd/mm/yyyy"
'Transforme la date en inversant les valeurs du mois et du jour
.Value = CDate(Month(myDate) & "/" & Day(myDate) & "/" & Year(myDate))
If Month(.Value) <> Month(myDate) Then j = j + 1
End If
End With
End If
Next
'Boîte de dialogue : nbre de dates corrigées sur nbre de cellules vérifiées
Call MsgBox(vbCr & "Résultat du traitement :" & vbCr & vbCr & _
j & " date(s) corrigée(s) sur " & i & " cellule(s) sélectionnée(s)." & Space(6), vbInformation + vbOKOnly, _
" Fonction de correction du type date")
Exit Sub
Except:
'Boîte de dialogue : message d'erreur
Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
Err.Description & Space(6), vbCritical + vbOKOnly, " Fonction de correction du type date")
End Sub
Conclusion
Avec la source de correction du format date en anglais, ces macros devraient permettre de traiter les erreurs les plus couramment rencontrées.
Le mode opératoire est simple. Après voir copié le code source dans l'éditeur VB, il vous suffit d'exécuter la procédure de création de la barre d'outils. Ensuite, vous n'aurez plus qu'à personnaliser celle-ci (facultatif) en choisissant les images qui vous conviennent.
Annulez la mise en commentaire si vous souhaitez affecter la macro permettant d'afficher les sources de données (ODBC)
Historique
- 31 janvier 2007 12:10:01 :
- Ajout du format pourcentage
- 01 février 2007 10:13:20 :
- Selon le type de nombre (entier ou réel) le format nombre comprend zéro ou deux décimales(naturellement, il est possible de généraliser à n décimales).
- 01 février 2007 17:02:03 :
- Ajout du format standard afin de le dissocier des formats spécifiques.
- 01 février 2007 17:23:52 :
- Pour le format standard, la variable " myValue " doit être un " Variant " !
- 02 février 2007 16:51:07 :
- Nouvelle saisie d'écran
- 05 février 2007 10:39:15 :
- MAJ des mots clés
- 05 février 2007 10:50:51 :
- format monétaire avec séparateur des milliers
- 05 février 2007 11:40:40 :
- Format général avec conversion conditionnelle en nombre
- 05 février 2007 11:49:17 :
- MAJ commentaires
- 05 février 2007 12:12:41 :
- Format standard : ajout de la condition Len(.Value) > 0 (pas de conversion d'une chaîne vide).
- 05 février 2007 14:06:36 :
- Séparation du format standard (convertir en nombre) des formats spécifiques (formats monéraire et pourcentage)
- 05 février 2007 15:04:55 :
- Nouvelle saisie d'écran (menus avec nouveau groupe)
- 06 février 2007 09:37:47 :
- Simplification pédagogique du code source de la méthode d'application d'un format pourcentage.
- 06 février 2007 11:22:00 :
- La mise à jour mineure précédente (ApplyPercentageFormat) oblige à modifier le type de " MyValue " en variant sinon l'affectation retourne une erreur d'incompatibilité de type.
- 06 février 2007 13:50:49 :
- MAJ commentaires
- 15 février 2007 14:30:03 :
- Prise en compte des options régionales.
Il y a toujours un petit malin pour ne pas faire comme tout le monde !
- 16 février 2007 16:09:46 :
- La dernière mise à jour était incorrecte.
Les paramètres régionaux sont gérés de façon implicite par le format natif de nombre.
- 16 février 2007 16:52:21 :
- Erreur de manip.
- 16 février 2007 16:58:11 :
- Jamais deux sans trois
- 20 février 2007 11:56:35 :
- Ajout de commentaires dans le code source (format natif)
- 02 mars 2007 13:07:41 :
- Ajout de la procédure de création de la barre d'outils
- 02 mars 2007 13:51:25 :
- Mode opératoire
- 02 mars 2007 18:07:57 :
- Nouvelle saisie d'écran
- 05 mars 2007 11:17:05 :
- Ajout d'un bouton pour afficher la calculatrice (raccourci).
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Convertir la date de installdate en format dword en format date lisible ? [ par rastapopey ]
Voila, je souhaite recuperer la date d'install d'un poste en lisant la valeur de la date d'install dans la registrySOFTWARE\MICROSOFT\WINDOWS NT\CURRE
convertir une chaine en une date - complications :-s [ par youkizouki ]
bonjour à tous,je possède une chaine de caractère représentant une date, je dois pour les besoin de mon applic comparer cette chai
Convertir date français en date US [ par bonbone ]
BONJOUR,J'utilise Access (VBA), j'ai créé des formulaires, dans l'un d'eux je récupére la liste de toutes les dates dans une listbox (date en format f
Convertir un format epoch au format Date [ par max_95 ]
Salut,J'ai récupéré depuis un serveur UNIX une date qui est au format Epoch (i.e. du style: 1212417068205) et je voudrais la convertir au format date
Conversion de dates en nombre et inversement [ par mimo37 ]
Bonjour à tous,Débutant en Visual Basic je me trouve confronté à un PB que je suis incapable de résoudre, mais qui je pense doit être simple pour un e
Convertir Serial date a une date format YYYY-MM-dd [ par BrokenArrow29 ]
Salut tout le monde,J'aimerais bien trouvé une fonction pour convertir une date de format serial 39794 a 2008-12-12Merci et bonne journée
Convertir une date en format Mysql? [ par neotof ]
Bonjour je voudrais exécuter une requête: [code=vb] str_requete = "SELECT * from tbl_tranche WHERE JOUR_OUVRABLE = " & "'" & date_du_jour & "'" [/co
problème de format de date en VBA [ par heljy ]
Bonjour, Je ne suis pas très fort en VBA et j'ai besoin de votre aide.[^^confus2] je lis des cellules dans un tableau Excel avec une macro. Lorsque la
VBA - Date - récupérer la valeur sous le format d'affichage [ par Stardust31 ]
Bonsoir, dans la cellule la valeur est 03/04/2010 et elle est affichée "avr-2010" (à cause du format Date). Comment récupérer en vba, la chaine de car
[Catégorie modifiée VB6 --> VBA] nombre de jours entre deux dates hors jours feries [ par Mosade ]
Bonjour a tous, Je souhaiterais de l aide sur un algo !! Donnees initiales sur excel : - date de debut - des dates de jours feries Je souhaite gene
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|