[Excel VBA]macro format

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. Salut je pense que

    Cells(??).numberformat = "0.00"

    devrais faire l'affaire tiens moi au courant
    0
    1. 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
      1. 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
        1. 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
          1. 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
            1. VBA me met automatiquement NumberFormat avec les majuscules. Ca ne fonctionne toujours pas :(
              0
              1. Tu as quel version d'Excel?car si tu as 2007 ou 2008 je te conseil de faire un enregistrement manuel de macro ;)
                0
                1. Contributeur
                  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
                  1. 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