VBA erreur fin d'instruction formule SI

Marg12 -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Dans mon fichier excel j'aimerais que dans mon code il rajoute cette formule a chaque nouvelle ligne tout fonctionne correctement sauf sur cette ligne.

Sheets("AE").Cells(i + 8, 15) = "=SI(O" & i + 8 & ">=108;"Oui";"Non")"

Je ne comprends pas d'où vient le problème j'ai rajouté des guillemets "" mais ça ne fonctionne toujours pas
Pouvez vous m'aider

Merci bonne journée

Configuration: Windows / Edge 87.0.664.55

5 réponses

  1. jee pee Messages postés 31917 Date d'inscription   Statut Modérateur Dernière intervention   9 989
     
    Bonjour,

    Juste une remarque de syntaxe, ne pratiquant pas VBA,

    Ton =SI(O cela se veut être un zéro ? alors non c'est un O, voilà un 0
    0
    1. Marg12
       
      Bonjour,

      Non c'et sensé etre un O fin la colonne O en tout cas pas un zéro
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bojour Marg12, jee pee

    Tu es en Vba ?
    0
    1. Marg12
       
      Oui la ligne fait partie d'une macro
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    "=SI(O" & i + 8 & ">=108;"Oui";"Non")"

    ta formu concerne une autre feuille ?
    si on est sur la m^me feuille

    "O" 1 I+8 est la m^me cellule que Cells(i + 8, 15)
    Veux tu remplacer >+108 par oui ou non ?
    mystere...

    0
    1. Marg12
       
      Oui c'est ça je suis sur la même feuille
      En fait je veux que sur la cellule O8 il y a la formule qui s'affiche en fonction du résultat présent en N8
      S'il est supérieur à 108 il affiche oui sinon non
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Donc c 'est N8 >=108 et non O8

    with Sheets("AE")
    .Cells(i+8, "O") = IIf(.Cells(i+8, "N") >= 108, "oui", "non")
    end with

    0
    1. Marg12
       
      Non elle ne fonctionne pas
      En fait c'est bien la cellule O8
      La formule doit se retrouver en P8
      J'ai fait un décalage mais elle ne fonctionne quand même pas

      Il faut que je puisse remplir les cellules en colonne O et que la formule se modifie en meme temps

      La formule dans la cellule est la suivante =SI(H8="Oui";"Oui";SI(O8>=108;"Oui";"Non"))

      et celle dans VBA

      Sheets("AE").Cells(i + 8, 15) = "=SI(H" & i + 8 & "="Oui";"Oui";SI(O" & i + 8 & ">=108;"Oui";"Non"))"

      J'ai rajouté une condition
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Marg12
         
        Un coup c'est O8, un coup c'est N8 un coup c'est P8

        N'IMPORTE QUOI si ce n'est pas se moquer du monde...
        0
      2. Marg12 > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Je me suis trompée et fait des modifications je suis désolée ça arrive a tout le monde je pense
        Sous le commentaire j'ai mis le code si vous voulez
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Salut Michel,

    "Normalement", pour ajouter une formule dans une cellule, on utilise sa propriété "Formula" (ou FormulaLocal ou FormulaR1C1 au choix, selon le but recherché et la méthode...).
    Dans le style :
    Sub essai()
       ActiveCell.Formula = "=IF(H8=""Oui"",""Oui"",IF(O8>=108,""Oui"",""Non""))"
    End Sub


    Ne pas oublier, dans ce cas, de doubler les guillemets.

    Sinon, pour résoudre le souci, l'intégralité du code pourra s'avérer nécessaire...
    0
    1. Marg12
       
      Je vous met le code complet pour que vous repreniez mieux je pense Je vous remercie pour votre patience en tout cas.

      Private Sub btn_valider_Click()
      
      'Choix des variables
          Dim i As Integer
          Dim n As Integer
          Dim compt As Integer
      
      'Choix des variables texte
          Dim nom_lot As String
          Dim eqt_lot As String
      
          i = 0
          n = 0
          compt = 1
      
      Sheets("BDD").Visible = True
      
      Dim reponse As String
      
      reponse = MsgBox("Confirmez la validation ? ", vbOKCancel)
      
      If reponse = 1 Then
      
      'vérification qu'il y a déjà des valeurs dans le AE
      
          While Sheets("BDD").Cells(n + 2, 1) <> ""
                 For i = 0 To liste_récap.ListCount - 1
                      If liste_récap.List(i, 0) = Sheets("BDD").Cells(n + 2, 2) And liste_récap.List(i, 1) = Sheets("BDD").Cells(n + 2, 3) Then
              
                      Sheets("AE").Cells(compt + 7, 1) = compt
                       
                      Sheets("AE").Cells(compt + 7, 2) = Sheets("BDD").Cells(n + 2, 2)
                      
                      Sheets("AE").Cells(compt + 7, 3) = Sheets("BDD").Cells(n + 2, 3)
                       
                      Sheets("AE").Cells(compt + 7, 4) = Sheets("BDD").Cells(n + 2, 4)
                      
                      Sheets("AE").Cells(compt + 7, 5) = Sheets("BDD").Cells(n + 2, 5)
                      
                      Sheets("AE").Cells(compt + 7, 6) = Sheets("BDD").Cells(n + 2, 6)
                      
                      Sheets("AE").Cells(compt + 7, 7) = Sheets("BDD").Cells(n + 2, 7)
                      
                      Sheets("AE").Cells(compt + 7, 8) = Sheets("BDD").Cells(n + 2, 8)
      
                      Sheets("AE").Cells(i + 8, 12) = "=I" & i + 8 & "*J" & i + 8 & "*K" & i + 8
                      
                      Sheets("AE").Cells(compt + 7, 13) = Sheets("BDD").Cells(n + 2, 9)
                      
                      Sheets("AE").Cells(i + 8, 15) = "=L" & i + 8 & "*N" & i + 8
      
                      ' Bonne formule  =SI(H8="Oui";"Oui";SI(O8>=108;"Oui";"Non"))
      ' formule sous VBA
                      Sheets("AE").Cells(i + 8, 15) = "=SI(H" & i + 8 & "="Oui";"Oui";SI(O" & i + 8 & ">=108;"Oui";"Non"))"
      
      
                      Sheets("AE").Cells(compt + 7, 17) = Sheets("BDD").Cells(n + 2, 10)
                      
                      compt = compt + 1
                  
                  End If
              Next i
          n = n + 1
          Wend
      End If
      
          Sheets("AE").Activate
          
              Sheets("Création AE").Visible = False
              Sheets("temp").Visible = False
              Sheets("BDD").Visible = False
      
      End Sub
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > Marg12
       
      Bon.
      Faisons simple.
      Que veux-tu faire avec ce code? Qu'est censée faire cette macro?
      Parce que là , tu boucles sur toutes les cellules de la colonne A de ta feuille BDD, puis boucle sur toute la listBox...
      Ça semble être un traitement inutile.
      En mots simples, dis nous ce que tu fait et ce que tu souhaites obtenir...
      0
    3. Marg12 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      La feuille BDD est une base de donnée qui permet de réunir toutes les informations
      La feuille création AE permet a une personne de choisir par exemple toutes les personnes qui sont dans le 13 et le 83 mais qui ont plus de 50 ans
      Et la feuille AE permet d'avoir toutes les informations concernant ses personnes la
      Un simple filtre ne suffirai pas car c'est juste l'idée en soi c'est plus complexe que ca

      Et grâce a la macro un tableau de synthese est fait j'ai juste à remplir mes colonnes I,J,K, H et O

      Est ce que s'est assez explicite ?
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > Marg12
       
      Est ce que s'est assez explicite ?

      Raté, non.
      Bon, mis à part ça, essaye ceci :
      Sheets("AE").Cells(i + 8, 15).Formula = "=IF(H" & i + 8 & "=""Oui"",""Oui"",IF(O" & i + 8 & ">=108,""Oui"",""Non""))"    
      0
    5. Marg12 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Alors je suis vraiment désolée en tout cas mais ton code fonctionne parfaitement ! ^^
      Merci beaucoup de ta patience c'est tres gentil

      Est ce que tu pourrais m'expliquer comment tu as fait ?
      0