écriture d'une macro se plante dans excel 2011 ou 2016

Résolu
irettigam -  
thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
cette macro fonctionne correctement
Sub Macro2()
 Range("E2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-2]="""","""",IF(HLOOKUP(RC[-2],R[-1]C[6]:R[6]C[13],2,FALSE)=0,"""",HLOOKUP(RC[-2],R[-1]C[6]:R[6]C[13],2,FALSE)))"
End Sub

Comment l'écrire sous cette forme qui plante ?
Sub Macro()
 Range("E2").Select
If range(C2 = "";"" ,(HLookup("C2", "K1:R8", 2, False = "0", "", HLookup ("C2", "K1:R8", 2, False))
End Sub

MERCI beaucoup pour votre aide

2 réponses

  1. Arkana0 Messages postés 1980 Date d'inscription   Statut Modérateur Dernière intervention   183
     
    Bonjour,

    Pour écrire une formule dans la cellule E2 :
    Range("E2").FormulaLocal = "=Ta formule"

    Entre les guillemets, tu écris exactement comme si tu étais sur Excel, à un détail près : quand tu voudras écrire
    ""
    , tu devras mettre à la place
    " & Chr(34) & Chr(34) & "

    En effet, en VBA, les guillemets servent à indiquer un début et une fin de chaîne de caractères.
    Pour écrire des guillemets il faut utiliser Chr(34), afin que le code comprenne de quoi il s'agit.
    Pour les introduire, tu vas devoir fermer la chaîne de caractères que tu as écrite jusqu'au moment où tu souhaites mettre ton guillemet...en mettant un guillemet donc.
    Tu dois ensuite ajouter plusieurs chaînes de caractères entre-elles, et c'est l'opérateur
    &
    qui le permet

    Rq : l'étape Range("E2").Select est inutile, sauf si tu as vraiment besoin que la cellule soit sélectionnée. Autrement, ça fait perdre beaucoup de temps d'exécution au code.
    0
    1. irettigam
       
      re bonjour
      il serait plus clair pour moi si tu voulais bien écrire cette macro
      Je sais c'est la facilité mais j'y est passé tellement de temps et un peu d'indulgence pour un vieux monsieur
      Merci d'avoir répondu si vite et peut être pour la suite ?
      0
  2. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723
     
    Bonjour,

    J'ai de l'indulgence parce que je ne suis pas tout jeune non plus.

    formule à adapter en VBA pour la cellule E2 :
    =IF(C2="","",IF(HLOOKUP(C2,K1:R8,2,FALSE)=0,"",HLOOKUP(C2,K1:R8,2,FALSE)))



    Sub Macro()

    If [C2] = "" Then
    [E2] = ""
    Else
    If Application.HLookup([C2], [K1:R8], 2, False) = 0 Then
    [E2] = ""
    Else
    [E2] = Application.HLookup([C2], [K1:R8], 2, False)
    End If

    End Sub


    0
    1. irettigam
       
      Je vais sur 74 ans et toi ?

      je teste et te tiens au courant
      MERCI
      0
      1. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723 > irettigam
         
        Un peu plus jeune. 65 ans. Content d'avoir pu t'aider.
        Je rajoute le "End if" manquant


        Sub Macro()

        If [C2] = "" Then
        [E2] = ""
        Else
        If Application.HLookup([C2], [K1:R8], 2, False) = 0 Then
        [E2] = ""
        Else
        [E2] = Application.HLookup([C2], [K1:R8], 2, False)
        End if
        End If

        End Sub
        0
    2. irettigam
       
      UN GRAND MERCI ça fonctionne très bien (il manquait simplement un end if)
      Ceci va me servir de modèle pour d'autres applications
      Je te suis vraiment très reconnaissant d'avoir résolu mon problème en apportant la solution sur un plateau
      MERCI,MERCI vraiment
      0
    3. irettigam
       
      ENCORE moi je me suis trop précipité en effet Si C2 trouve ....OK en E2
      Si C2 ne trouve..... pas OK en E2
      mais si C2 est égal à blanc il apparait # N/A en E2 pourquoi ?
      Un message apparait : incompatibilité de type... si je clic sur déboguer la ligne :
      if application.hlookup( apparait en sur brillance
      Merci
      0
    4. irettigam
       
      DESOLE ça marche très bien
      C'est cela la vieillesse !
      MERCI encore
      Bonne journée
      irettigam
      0