IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Formule intégrée dans code VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Par défaut Formule intégrée dans code VBA
    Bonjour,

    Je souhaite pouvoir intégrer une formule en dur dans le code plutôt que dans les cellules de ma colonne.
    J'ai lu ici et là quelques discussions à ce sujet mais j'ai une erreur d'exécution 1004.

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Workbook_Activate()
    With ThisWorkbook.Worksheets("Feuil1")
     .Range("G:G").Formula = "=SI(E2=0;"""";DATE(ANNEE(E2);MOIS(E2)+1;1))"
     End With
    End Sub
    Quelle est mon erreur?

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Si tu veux passer la formule en français, tu dois utiliser FormulaLocal. Tant que tu restes en version français d'Excel, tu ne rencontreras pas de soucis. Mais si ta macro doit tourner sur un Excel d'une version linguistique différente, tu rencontreras des soucis. Dans ce cas, il serait plus intéressant de passer la formule en anglais.

    Tu peux récupérer la formule en anglais en la saisissant dans une cellule puis, côté VBA, en la récupérant dans la fenêtre d'exécution (CTRL+G) avec ? activecell.formula
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    La traduction depuis le tableur Excel du point virgule en langage VBA est la virgule.

    D'autre part, tu affectes la formule à 1048576 cellules (2^...).
    Mieux vaut définir précisément la dernière ligne à informer et affecter la formule à la plage correspondante.

    De plus,
    1 - pour des raisons de clarté donc de rigueur, mieux vaut déclarer ta formule constante en début de procédure.
    2 - tu peux coller les valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Option Explicit
     
    Public Sub laformule()
     
    Const myformula As String = "=E2*5"
     
    Dim DERLIGN As Long
     
    With ThisWorkbook.Worksheets("Feuil1")
     
            DERLIGN = .Cells(.Rows.Count, 5).End(xlUp).Row
     
            With .Range("G2:G" & DERLIGN)
                    .Formula = myformula
                    .Value = .Value
            End With
     
    End With
     
    End Sub
    Salut Pierre,

    (nos post se sont croisés)

    En effet.
    Pour ma part, je préfère Formula à Formulalocal. Cette propriété est plus générale et constitue donc une marque de prudence.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Par défaut
    Merci à vous deux pour la clarté de vos réponses.
    Alors il y a un truc qui me paraît assez étrange car ça fonctionne mais ça fonctionne même au-delà de ma demande (ce qui m'arrange totalement en même temps).
    J'ai donc renseignée une date en E14. Il me calcule très justement ma date en cellule G14. Mais du coup, il me calcule aussi ma date de fin en cellule H14.
    Est-ce normal que par effet de rebond, il me calcule la date de fin dans la colonne adjacente car la formule est renseignée en H2?

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Pourrais-tu retourner
    1- une capture d'écran de la feuille de travail
    2 - ton code intégral

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 32
    Par défaut
    Pour ce qui est du code le voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Public Sub laformule()
     
    Const myformula As String = "=SI(E2=0;"""";DATE(ANNEE(E2);MOIS(E2)+1;1))"
     
    Dim DERLIGN As Long
     
    With ThisWorkbook.Worksheets("Feuil1")
     
            DERLIGN = .Cells(.Rows.Count, 5).End(xlUp).Row
     
            With .Range("G2:G" & DERLIGN)
                    .Formula = myformula
                    .Value = .Value
            End With
     
    End With
     
    End Sub
    Voici la copie écran:
    Nom : Capture exc.PNG
Affichages : 129
Taille : 13,1 Ko

    Alors à savoir qu'on trouve actuellement la formule sur la plage G2:G11 mais pas au delà. Pareil pour la formule de la colonne fin abo. A compter de G12, le code VBA semble s'appliquer avec la date de fin qui s'affiche également en H12.
    Là, où je dois rater quelque chose c'est quand je supprime les lignes2 à 13, le code ne semble plus fonctionner... je me suis emballé un peu vite en fait.

    EDIT: la colonne F est masquée sur la copie écran

Discussions similaires

  1. erreur dans code vba
    Par Renardo dans le forum IHM
    Réponses: 2
    Dernier message: 15/12/2008, 15h35
  2. requete sql dans code vba
    Par kernel57 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/01/2008, 15h30
  3. comment ajouter une condition if dans code VBA
    Par misig dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/12/2007, 00h03
  4. Problème SQL dans code VBA
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 15/05/2007, 13h22
  5. PW perdu dans code VBA sous Excel ?
    Par electrosat03 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/01/2007, 22h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo