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 :

problème insertion formule via vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Par défaut problème insertion formule via vba
    bonjour à tous,

    j'ai une colle pour vous ; je cherche à insérer une formule dans une cellule en vba, car un des champs dépend du contenu d'une autre formule. (ça parait un peu compliqué, mais le code est relativement simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Bouton1_Clic()
        Dim formule, feuille As String
        n = Worksheets("Feuil1").Range("K4").Value
        feuille = Worksheets("Feuil1").Range("G2").Value
        formule = "=IF(H2=" & """tournage""" & ";VLOOKUP(H5;" & feuille & "!B:F;1;FALSE);VLOOKUP(H5;" & feuille & "!I:J;1;FALSE))"
        For i = 1 To n
        MsgBox (formule)
        Worksheets("Feuil1").Range("J" & i + 4).FormulaR1C1 = formule
        Next i
    End Sub
    en fait, la valeur feuille désigne la feuille de calcul du classeur dans laquelle la fonction recherchev doit aller chercher la valeur.

    j'ai essayé de rentrer le code en langage US et FR, avec ou sans le R1C1 (et le local quand le code est en français), mais rien n'y fait, j'ai toujours l'erreur 1004...


    je vous remercie d'avance de vos réponses

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Comme tu as écris la formule en En-US et en notation A1, la propriété à renseigner est Formula.
    En étasunien, le séparateur est la virgule et non pas le point-virgule.

    Tu corriges cela et si cela ne va toujours pas, tu fais Cordialement,

    PGZ

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Bouton1_Clic()
    Dim Formule As String, Feuille As String
    Dim N As Long
     
    With Worksheets("Feuil1")
        N = .Range("K4").Value
        Feuille = .Range("G2").Value
        If N > 0 And Feuille <> "" Then
            Formule = "=IF($H$2=" & """tournage""" & ",VLOOKUP(H5,'" & Feuille & "'!B:F,1,FALSE),VLOOKUP(H5,'" & Feuille & "'!I:J,1,FALSE))"
            .Range("J5:J" & N + 4).Formula = Formule
        End If
    End With
    End Sub
    Mais quel est le but si on récupère la première colonne de recherche

    PS: J'ai évité la boucle

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Par défaut
    merci de votre réponse rapide, mais finalement j'ai corrigé le problème en le contournant, voici la solution que j'ai trouvée (par contre je ne comprends toujours pas où était le problème...)

    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
    21
    22
    23
    24
    If machine = "tournage" Then 'si tournage
                table = "B:F"
                If Worksheets("Feuil1").Range("L" & i + 4) = "ébauche" Then 'si tournage ébauche
                    colonnevc = 2
                    colonneavance = 3
                    Else 'sinon (tournage finition)
                    colonnevc = 4
                    colonneavance = 5
                End If 'fin si (ébauche ou finition)
                formuleavance = "=RECHERCHEV(J" & i + 4 & ";" & feuille & "!" & table & ";" & colonneavance & ";FAUX)*" & coefmatoutilavance
                Else 'sinon (fraisage)
                table = "H:J"
                If Worksheets("Feuil1").Range("L" & i + 4) = "ébauche" Then 'si fraisage ébauche
                    colonnevc = 2
                    Else 'sinon (fraisage finition)
                    colonnevc = 3
                End If 'fin si (ébauche ou finition)
            End If 'fin si (tournage ou fraisage)
            formulevc = "=RECHERCHEV(J" & i + 4 & ";" & feuille & "!" & table & ";" & colonnevc & ";FAUX)*" & coefmatoutilvc
            Worksheets("Feuil1").Range("M" & i + 4).FormulaLocal = formulevc 'écriture formule vitesse de coupe
            If machine = "tournage" Then
                Worksheets("Feuil1").Range("O" & i + 4).FormulaLocal = formuleavance 'écriture formule avance si tournage
                Else 'sinon pas écriture formule avance car fraisage
                End If
    (c'est un extrait, le code c'est énormément compliqué au fur et à mesure...)

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je vois que tu n'as pas tiré profit en évitant la boucle.

    Regarde la formule (la tienne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formule = "=IF(H2=" & """tournage""" & ";VLOOKUP(H5;" & feuille & "!B:F;1;FALSE);VLOOKUP(H5;" & feuille & "!I:J;1;FALSE))"
    et ce qu'il fallait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Formule = "=IF($H$2=" & """tournage""" & ",VLOOKUP(H5,'" & Feuille & "'!B:F,1,FALSE),VLOOKUP(H5,'" & Feuille & "'!I:J,1,FALSE))"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème fermeture excel via vba
    Par dav787 dans le forum Général VBA
    Réponses: 1
    Dernier message: 14/03/2013, 17h17
  2. [AC-2010] Problème lancement requete via VBA
    Par ijunior dans le forum VBA Access
    Réponses: 11
    Dernier message: 09/10/2011, 16h28
  3. Erreur dans insertion formule par VBA
    Par Nanit6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/01/2011, 17h33
  4. Insertion formule par vba
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/08/2007, 09h34
  5. Problème sous powerpoint via VBA
    Par seb_de_quimper dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 02/04/2007, 14h58

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