Création de colonnes avec formules

Résolu
Bonjour,
J'ai écrit le code suivant et j'obtiens une erreur
Dans C1, j'ai une date du format "17/10/2020"

With ActiveWorkbook.sheets("feuille2")
For i = 3 To 5
.Columns(i).Insert ' 1ère colonne (C)
.Columns(i).NumberFormat = "General"
Next

.Range("C1").FormulaLocal = "=macro(B1)"
.Range("C1").AutoFill Destination:=.Range("C1:C" & DerLign), Type:=xlFillDefault

.Range("D1").FormulaLocal = "=CNUM(DROITE(C1;4))" 'date
.Range("D1").AutoFill Destination:=.Range("D1:D" & DerLign), Type:=xlFillDefault

C'est ici que j'obtiens une erreur définie par l'application ou par l'objet
.Range("E1").FormulaLocal = "=GAUCHE(C1,5)"
.Range("E1").AutoFill Destination:=.Range("E1:E" & DerLign), Type:=xlFillDefault
End With

j'ai essayé GAUCHE(C1;5) pour tester, mais en réalité je désire obtenir
une date sous la forme 17-oct, l'année étant dans une autre colonne
Merci de votre aide Cordialement

Configuration: Windows / Edge 86.0.622.38

5 réponses

  1. Contributeur
    Bonjour,

    comme ceci:

    Option Explicit
    Global Debut As Integer
    Sub Calcul()
        Dim DerLigne
        With ActiveWorkbook.sheets("Feuil2")
            'Création des feuilles
            Dim i As Integer
            For i = 4 To 5
                .Columns(i).Insert
                .Columns(i).NumberFormat = "General"
                .Columns(i).HorizontalAlignment = xlCenter
            Next
            'Calcul nombre de lignes
            DerLigne = sheets("Feuil2").Cells.Find("*", , , , xlByRows, xlPrevious).Row
            
            .Range("D1").FormulaLocal = "=CNUM(DROITE(C1;4))"  'date
            .Range("D1").AutoFill Destination:=.Range("D1:D" & DerLigne), Type:=xlFillDefault
            
            'C'est là ou ça coince
            'Je voudrais obtenir un résulatat comme 21-déc
            'j'ai essayé avec = GAUCHE, pour tester mais erreur
            
            .Range("E1").FormulaLocal = "=GAUCHE(C1;5)"
            .Range("E1").AutoFill Destination:=.Range("E1:E" & DerLigne), Type:=xlFillDefault
        End With
       For i = 1 To DerLigne
     Range("E" & i).Value = Format(Range("E" & i), "dd-mmmm")
        Next
    End Sub
    
    


    Voilà
    1. Merci infiniment, c'est ce que je cherchais
      Je marque comme résolu
      Cordialement
      1. Contributeur
        bonjour,
        que veux-tu obtenir?
        un code qui ne fonctionne pas ne peut surement pas remplacer une description de l'objectif.
        pourquoi utiises-tu un code, au lieu d'enregistrer une formule?
        1. Modérateur
          Bonjour,

          Tu dis

          j'ai essayé GAUCHE(C1;5) pour tester

          Ce qui semble être la bonne syntaxe... et donc.. ça donne quoi .. toujours l'erreur ??

          en réalité je désire obtenir
          une date sous la forme 17-oct,

          Ca serait donc plus cette méthode que tu devrais utiliser je pense
          = TEXT (C1 ; "dd-mmm")
          


          1. Contributeur
            cela fonctionne mieux sans espace entre T et (:
            = TEXT(C1 ; "dd-mmm")