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 :

Insertion d'une formule à partir d'une macro (if/countif) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 23
    Par défaut Insertion d'une formule à partir d'une macro (if/countif)
    Bonjour,

    J'essaie d'insérer une formule à partir d'une macro, mais je n'arrive pas à savoir d'où provient l'erreur.
    j'ai une erreur 13 type mismatch mais je ne crois pas que l'erreur provienne de mes variables :

    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
     
        Dim aa As String
        aa = Left(Ccable, 6)
        Dim bb As Variant
        Dim bb2 As Variant
        bb = Cells(LigneUti + 1, ColUti - 2).Address
        bb2 = Cells(LigneUti - 2, ColUti - 2).Address
        Dim cc As Variant
        Dim cc2 As Variant
        cc = Cells(Ligne1 + 1, Col1 + 9).Address
        cc2 = Cells(Ligne1 - 2, Col1 + 9).Address
        Dim CodeG2r As String
        CodeG2r = Cells(10, 8).Address
     
    MaPlage.Value = _
        "= IF(COUNTIF(" & bb2 & ",""*PB*""),"" SFR "" & " & CodeG2r & " & " & aa & " & "" - A ""& I24 & ""-"" & SUBSTITUTE(" & bb2 & ",""O"","""") &"" O ""& IF(COUNTIF(" & cc2 & ",""*PB*""),I24 & ""-"" &SUBSTITUTE(" & cc2 & ",""O"","""") & "" E"",IF(COUNTIF(" & cc & ",""*mM*"")+COUNTIF(" & cc & ",""*BPE*"")+COUNTIF(" & cc & ",""*M*""),RIGHT(" & cc & ",LEN(" & cc & ")-SEARCH(" - "" & _
             "" & cc & ",1))," & cc & ")&IF(COUNTIF(" & cc & ",""*FT*""),"""",""-FT"") & "" E""), "" SFR "" & " & CodeG2r & " &" & aa & " & "" - A "" & IF(COUNTIF(" & bb & ",""*mM*"")+COUNTIF(" & bb & ",""*BPE*"")+COUNTIF(" & bb & ",""*M*""),RIGHT(" & bb & ",LEN(R[-8]C[-8])-SEARCH(""-""," & bb & ",1))," & bb & ")&IF(COUNTIF(" & bb & ",""*FT*""),"""",""-FT"") & "" O "" & IF(COUNTIF(" & bb2 & "" & _
            "*PB*""),I24 & ""-"" & SUBSTITUTE(" & cc2 & ",""O"","""") & "" E"",IF(COUNTIF(" & cc & ",""*mM*"")+COUNTIF(" & cc & ",""*BPE*"")+COUNTIF(" & cc & ",""*M*""),RIGHT(" & cc & ",LEN(" & cc & ")-SEARCH(""-""," & cc & ",1))," & cc & ")&IF(COUNTIF(" & cc & ",""*FT*""),"""",""-FT"") & "" E"" ))"
    Désolé pour cette formule indigeste, c'est justement pour ca que je n'arrive pas à savoir où est le pb... Un pro de la formule serait il dans le coin?

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Salut,


    Avant de parler de ta formule qui, comme tu le dis si bien, est indigeste , tu pourrais pas l'écrire dans une variable texte, et faire un debug.print dessus, histoire de voir à quoi ressemble ta formule avec les valeurs qui vont bien ?

    Cela nous (te) permettrait dans un premier temps de voir si ta formule est correcte (genre si il manque pas des parenthèses...)
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    De plus pour ajouter une formule dans une cellule il faut utiliser le type de syntaxe suivant : http://excel.developpez.com/faq/?page=Formules#Formula

    Philippe

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 23
    Par défaut
    Bonjour et merci pour vos réponses,

    après un debug.print cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    = IF(COUNTIF($AE$16,"*PB*")," SFR " & $H$10 & 24 Fo  & " - A "& I24 & "-" & SUBSTITUTE($AE$16,"O","") &" O "& IF(COUNTIF($AP$16,"*PB*"),I24 & "-" & SUBSTITUTE($AP$16,"O","") & " E",IF(COUNTIF($AP$19,"*mM*")+COUNTIF($AP$19,"*BPE*")+COUNTIF($AP$19,"*M*"),RIGHT($AP$19,LEN($AP$19)-SEARCH(" - " & $AP$19,1)),$AP$19)&IF(COUNTIF($AP$19,"*FT*"),"","-FT") & " E"), " SFR " & $H$10 &24 Fo  & " - A " & IF(COUNTIF($AE$19,"*mM*")+COUNTIF($AE$19,"*BPE*")+COUNTIF($AE$19,"*M*"),RIGHT($AE$19,LEN(R[-8]C[-8])-SEARCH("-",$AE$19,1)),$AE$19)&IF(COUNTIF($AE$19,"*FT*"),"","-FT") & " O " & IF(COUNTIF($AE$16*PB*"),I24 & "-" & SUBSTITUTE($AP$16,"O","") & " E",IF(COUNTIF($AP$19,"*mM*")+COUNTIF($AP$19,"*BPE*")+COUNTIF($AP$19,"*M*"),RIGHT($AP$19,LEN($AP$19)-SEARCH("-",$AP$19,1)),$AP$19)&IF(COUNTIF($AP$19,"*FT*"),"","-FT") & " E" ))
    Avec une belle erreur 1004 à l'arrivée, je ne sais pas trop pourquoi il me supprime une parenthèse à la fin.
    J'ai tenté d'insérer cette formule directement dans ma cellule, impossible de la valider.

    Philippe, J'ai tenté avec les .formula, sans succès non plus (d'ailleurs est ce que cela est vraiment nécessaire? je n'ai jamais eu besoin de ces extensions pour insérer des formules jusqu'ici)

    EDIT :
    Effectivement je vois mieux où ca coince, en fait c'est pile au retour à la ligne dans mon module mais je ne trouve pas la syntaxe exacte ^^ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF(COUNTIF(" & bb2 & " , _
    ""*PB*""),I24 & ""-"" & SUBSTITUTE(" & cc2 & ",""O"","""")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    = IF(COUNTIF(" & bb2 & ",""*PB*""),"" SFR "" & " & CodeG2r & " & " & aa & " & "" - A ""& I24 & ""-"" & SUBSTITUTE(" & bb2 & ",""O"","""") &"" O ""& IF(COUNTIF(" & cc2 & ",""*PB*""),I24 & ""-"" & SUBSTITUTE(" & cc2 & ",""O"","""") & "" E"",IF(COUNTIF(" & cc & ",""*mM*"")+COUNTIF(" & cc & ",""*BPE*"")+COUNTIF(" & cc & ",""*M*""),RIGHT(" & cc & ",LEN(" & cc & ")-SEARCH("" - "" & " & cc & ",1))," & cc & ")&IF(COUNTIF(" & cc & ",""*FT*""),"""",""-FT"") & "" E""), "" SFR "" & " & CodeG2r & " &" & aa & " & "" - A "" & IF(COUNTIF(" & bb & ",""*mM*"")+COUNTIF(" & bb & ",""*BPE*"")+COUNTIF(" & bb & ",""*M*""),RIGHT(" & bb & ",LEN(R[-8]C[-8])-SEARCH(""-""," & bb & ",1))," & bb & ")&IF(COUNTIF(" & bb & ",""*FT*""),"""",""-FT"") & "" O "" & IF(COUNTIF(" & bb2 & " , " _
    "*PB*""),I24 & ""-"" & SUBSTITUTE(" & cc2 & ",""O"","""") & "" E"",IF(COUNTIF(" & cc & ",""*mM*"")+COUNTIF(" & cc & ",""*BPE*"")+COUNTIF(" & cc & ",""*M*""),RIGHT(" & cc & ",LEN(" & cc & ")-SEARCH(""-""," & cc & ",1))," & cc & ")&IF(COUNTIF(" & cc & ",""*FT*""),"""",""-FT"") & "" E"" )))"

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Il n'ya pas que là qu'il y a un souci :

    = IF(COUNTIF($AE$16,"*PB*")," SFR " & $H$10 & 24 Fo & " - A "& I24 & "-"
    Je vois pas ce que viens faire ce 24 Fo tout seul abandonné au milieu de ta formule et ça tu l'as 2 ou 3 fois.

    Pour le retour à a ligne dans un string, ça s'écrit comme tel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF(COUNTIF(" & bb2 & " , _
    & ""*PB*""),I24 & ""-"" & SUBSTITUTE(" & cc2 & ",""O"","""")
    Mais par contre, étant donné que c'est un string dans un string, je ne suis pas sur de la syntaxe. Ne vaudrait-il pas mieux écrire ton résultat dans une variable texte, histoire d'être tranquille ? Ça te permettrait, par la même occasion, de séparer tes données pour savoir où tu en es de ta fonction
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 23
    Par défaut
    Bonjour et désolé pour ma réponse tardive (période de fête oblige )

    Merci Illight pour ta réponse, effectivement j'avais bien un pb au niveau de mon texte hors guillemets..

    Après avoir passé une partie de la matinée dessus, ma formule fonctionne!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MaPlage.Formula = "= IF(COUNTIF(" & bb2 & ",""*PB*""),"" SFR "" & " & CodeG2r & " & """ & aa & """ & "" - A ""& I24 & ""-"" & SUBSTITUTE(" & bb2 & ",""O"","""") &"" O ""& IF(COUNTIF(" & cc2 & ",""*PB*""),I24 & ""-"" & SUBSTITUTE(" & cc2 & ",""O"","""") & "" E"",IF(COUNTIF(" & cc & ",""*mM*"")+COUNTIF(" & cc & ",""*BPE*"")+COUNTIF(" & cc & ",""*M*""),RIGHT(" & cc & ",LEN(" & cc & ")-SEARCH("" - "" & " & cc & ",1))," & cc & ")&IF(COUNTIF(" & cc & ",""*FT*""),"""",""-FT"") & "" E""), "" SFR "" & " & CodeG2r & " & """ & aa & """ & "" - A "" & IF(COUNTIF(" & bb & ",""*mM*"")+COUNTIF(" & bb & ",""*BPE*"")+COUNTIF(" & bb & ",""*M*""),RIGHT(" & bb & ",LEN(" & bb & ")-SEARCH(""-""," & bb & ",1))," & bb & ")&IF(COUNTIF(" & bb & ",""*FT*""),"""",""-FT"") & "" O "" & IF(COUNTIF(" & bb2 & " , ""*PB*"")" _
        & ",I24 & ""-"" & SUBSTITUTE(" & cc2 & ",""O"","""") & "" E"",IF(COUNTIF(" & cc & ",""*mM*"")+COUNTIF(" & cc & ",""*BPE*"")+COUNTIF(" & cc & ",""*M*""),RIGHT(" & cc & ",LEN(" & cc & ")- SEARCH(""-""," & cc & ",1))," & cc & ")&IF(COUNTIF(" & cc & ",""*FT*""),"""",""-FT"") & "" E"" ))"
    Merci pour votre aide,
    Et bonne année à tous et au forum!

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

Discussions similaires

  1. [XL-2013] Nom d'un onglet dans une formule à partir d'une cellule
    Par pounette dans le forum Excel
    Réponses: 3
    Dernier message: 04/12/2013, 15h06
  2. Réponses: 1
    Dernier message: 15/04/2011, 13h34
  3. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  4. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  5. Réponses: 5
    Dernier message: 22/05/2008, 14h42

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