[Excel VBA]macro format
The Flow
-
The Flow -
The Flow -
Bonjour à tous !
Je travaille actuellement sur une automatisation de données en VBA.
Après avoir créé une colonne, j'applique une formule =Gauche() à chacune de ses cellules afin d'isoler les 2 chiffres des cellules adjacente. Dans ma macro, j'ai programmé un copier/collage spécial par valeur afin de supprimer la formule tout en gardant cette nouvelle valeur.
Voici mon code :
Le souci est que la colonne ne passe pas automatiquement en format "nombre". J'ai besoin d'appliquer ce format automatiquement de manière à ce que ces cellules puissent servir de référence dans une rechercheV, et je n'y parviens pas.
Lorsque je mets fin à ma macro à ce niveau là de l'automatisation, Excel m'indique un point d'exclamation à coté de chaque cellule. Lorsque l'on clique sur ce dernier, un menu déroulant apparaît et me propose de "convertir la cellule en nombre". J'arrive à obtenir le résultat manuellement de cette manière, mais comment parvenir au même résultat au moyen d'une macro Excel ?
Je remercie à l'avance tous ceux qui prendront la peine de me venir en aide.
Bonne journée et merci à vous !
Je travaille actuellement sur une automatisation de données en VBA.
Après avoir créé une colonne, j'applique une formule =Gauche() à chacune de ses cellules afin d'isoler les 2 chiffres des cellules adjacente. Dans ma macro, j'ai programmé un copier/collage spécial par valeur afin de supprimer la formule tout en gardant cette nouvelle valeur.
Voici mon code :
Range("AC2").Select ActiveCell.FormulaR1C1 = "=RC[-7]+RC[-2]" Dim LastRowAC As Long With ActiveSheet LastRowAC = .Cells(.Rows.Count, "A").End(xlUp).Row End With Range("AC2").AutoFill Destination:=Range("AC2:AC" & LastRowAC), Type:=xlFillDefault
Le souci est que la colonne ne passe pas automatiquement en format "nombre". J'ai besoin d'appliquer ce format automatiquement de manière à ce que ces cellules puissent servir de référence dans une rechercheV, et je n'y parviens pas.
Lorsque je mets fin à ma macro à ce niveau là de l'automatisation, Excel m'indique un point d'exclamation à coté de chaque cellule. Lorsque l'on clique sur ce dernier, un menu déroulant apparaît et me propose de "convertir la cellule en nombre". J'arrive à obtenir le résultat manuellement de cette manière, mais comment parvenir au même résultat au moyen d'une macro Excel ?
Je remercie à l'avance tous ceux qui prendront la peine de me venir en aide.
Bonne journée et merci à vous !
A voir également:
- [Excel VBA]macro format
- Format epub - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Format factory - Télécharger - Conversion & Codecs
- Liste déroulante excel - Guide
- Hp usb disk storage format tool - Télécharger - Stockage
9 réponses
Redonky, merci de m'avoir répondu.
J'ai testé ta proposition en écrivant ceci et cela n'a pas fonctionné :
Comme tu peux le voir dans la description de mes tentatives, je ne suis qu'un petit bidouilleur débutant :)
Par contre, je viens de m'apercevoir que je n'avais pas copié le bon extrait du code. Le voici :
Merci
J'ai testé ta proposition en écrivant ceci et cela n'a pas fonctionné :
Range("AU:AU").NumberFormat="0.00"et
Cells("AU2").NumberFormat="0.00"ou encore
Cells(AU2).NumberFormat="0.00"
Comme tu peux le voir dans la description de mes tentatives, je ne suis qu'un petit bidouilleur débutant :)
Par contre, je viens de m'apercevoir que je n'avais pas copié le bon extrait du code. Le voici :
' Création de la colonne code secteur Columns("AO:AO").Select Selection.Insert Shift:=xlToRight Range("AO1").Select ActiveCell.FormulaR1C1 = "Code Secteur" Range("AO2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)" Dim LastRowAN As Long With ActiveSheet LastRowAO = .Cells(.Rows.Count, "A").End(xlUp).Row End With Range("AO2").AutoFill Destination:=Range("AO2:AO" & LastRowAO), Type:=xlFillDefault 'copie des valeurs Columns("AO:AO").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Merci
Tous tes échecs me paraisse normal car :
Range("AU:AU").NumberFormat="0.00" ne comporte pas de chiffre
Range("AU2").NumberFormat="0.00" me semble juste ou
Range("AU2:AU2").NumberFormat="0.00" me semble juste mais stupide
et cells s'utilise de la manière suivante :
Cells(ligne, colonne)
donc Cells(2, "AU").NimberFormat="0.00" me semble juste.
Alors?
Range("AU:AU").NumberFormat="0.00" ne comporte pas de chiffre
Range("AU2").NumberFormat="0.00" me semble juste ou
Range("AU2:AU2").NumberFormat="0.00" me semble juste mais stupide
et cells s'utilise de la manière suivante :
Cells(ligne, colonne)
donc Cells(2, "AU").NimberFormat="0.00" me semble juste.
Alors?
Merci pour ces précisions, malheureusement cela ne fonctionne toujours pas.
J'anticipe quelque peu sur ma prochaine question. Comment adapter cette formule Cell à toute les valeurs de la colonne AU ? Je n'aurai malheureusement pas qu'une cellule à traiter de cette manière.
Merci encore
Sub test() Sheets("IP").Select Cells(2, "AU").NumberFormat = "0.00" End Sub
J'anticipe quelque peu sur ma prochaine question. Comment adapter cette formule Cell à toute les valeurs de la colonne AU ? Je n'aurai malheureusement pas qu'une cellule à traiter de cette manière.
Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Columns("AU").numberformat="0.00"
Dit moi si ça ça marche?
PS: depuis tout à l'heur j'écris NumberFormat au lieu de numberformat :s si c'est ça :'(
Dit moi si ça ça marche?
PS: depuis tout à l'heur j'écris NumberFormat au lieu de numberformat :s si c'est ça :'(
Tu as quel version d'Excel?car si tu as 2007 ou 2008 je te conseil de faire un enregistrement manuel de macro ;)
Bonsoir,
Tu pourrais aussi déposer un extrait de ton fichier sur cijoint.fr et coller ici le lien fourni.
Vu que tu passes par formule tu pourrais essayer avec:
ActiveCell.FormulaR1C1 = "=(LEFT(RC[-1],2))*1"
au lieu de :
ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)"
pour forcer la conversion en numérique, et tu peux laisser le format des cellules en 'standard'
Mais il serait plus simple et plus rapide de te passer des formules sur la feuille et le faire directement en vba
eric
Tu pourrais aussi déposer un extrait de ton fichier sur cijoint.fr et coller ici le lien fourni.
Vu que tu passes par formule tu pourrais essayer avec:
ActiveCell.FormulaR1C1 = "=(LEFT(RC[-1],2))*1"
au lieu de :
ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)"
pour forcer la conversion en numérique, et tu peux laisser le format des cellules en 'standard'
Mais il serait plus simple et plus rapide de te passer des formules sur la feuille et le faire directement en vba
eric
Bonjour à vous !
Pour répondre à toutes vos propositions :
je suis sous excel 2003 et mon code a été généré jusque là à partir de l'enregistreur de macros.
J'ai modifié la formule en rajoutant un *1 (sous les conseils d'ériiic) et ça fonctionne niquel !
Un grand merci pour votre soutien !
---------
Si vous voulez vous mesurer à un deuxième challenge, je vous invite à consulter le topic suivant.
https://forums.commentcamarche.net/forum/affich-13711066-vba-excel-rechercher-remplacer-format
Le problème est que j'ai enregistré une macro qui effectue un recherché/remplacé de "." en "/" afin de convertir le format de cellules au format date. Le changement de caractère à bien lieu, mais certaines cellules ne passent pas automatiquement an format date, alors que ça fonctionne lorsque je fais cette opération manuellement).
Pour répondre à toutes vos propositions :
je suis sous excel 2003 et mon code a été généré jusque là à partir de l'enregistreur de macros.
J'ai modifié la formule en rajoutant un *1 (sous les conseils d'ériiic) et ça fonctionne niquel !
Un grand merci pour votre soutien !
---------
Si vous voulez vous mesurer à un deuxième challenge, je vous invite à consulter le topic suivant.
https://forums.commentcamarche.net/forum/affich-13711066-vba-excel-rechercher-remplacer-format
Le problème est que j'ai enregistré une macro qui effectue un recherché/remplacé de "." en "/" afin de convertir le format de cellules au format date. Le changement de caractère à bien lieu, mais certaines cellules ne passent pas automatiquement an format date, alors que ça fonctionne lorsque je fais cette opération manuellement).