[Excel VBA]macro format

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 :
    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 !
Configuration: Windows XP
Firefox 3.5.1

9 réponses

  1. redonky Messages postés 103 Statut Membre 23
     
    Salut je pense que

    Cells(??).numberformat = "0.00"

    devrais faire l'affaire tiens moi au courant
    0
  2. The Flow
     
    Redonky, merci de m'avoir répondu.

    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
    0
  3. redonky Messages postés 103 Statut Membre 23
     
    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?
    0
  4. The Flow
     
    Merci pour ces précisions, malheureusement cela ne fonctionne toujours pas.

    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. redonky Messages postés 103 Statut Membre 23
     
    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 :'(
    0
  7. The Flow
     
    VBA me met automatiquement NumberFormat avec les majuscules. Ca ne fonctionne toujours pas :(
    0
  8. redonky Messages postés 103 Statut Membre 23
     
    Tu as quel version d'Excel?car si tu as 2007 ou 2008 je te conseil de faire un enregistrement manuel de macro ;)
    0
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  10. The Flow
     
    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).
    0