[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. 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
    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. 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. VBA me met automatiquement NumberFormat avec les majuscules. Ca ne fonctionne toujours pas :(
          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. 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. 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. 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. Salut je pense que

                    Cells(??).numberformat = "0.00"

                    devrais faire l'affaire tiens moi au courant
                    0