Problème VBA Fonction si

Bonjour à tous,

Etant novice dans le domaine et Excel, je viens demander votre aide. En effet, après avoir regardé milles et un tutos, j'ai réussi à créer un code au sein d'une macro.

Cependant, le code ne fonctionne pas ou du moins sur 1 seule possibilité lorsque ma macro est ouverte et que j'appuie sur le bouton lecture.

Ce que je cherche à avoir paraît pourtant simple (à titre d'exemple): Si la cellule A2 est "O" et la cellule A3 est "appliqué" alors A4 est égale à "3". Ainsi de suite pour avoir toutes les possibilités entrées ( voir photo )

Vous trouverez le code en bas, dites moi si vous voyez une ou plusieurs erreurs, la photo des possibilités peut vous aider aussi. Néanmoins, même si le code est à changé, ma macro ne fonctionne pas lorsque je ferme les onglets et que je suis sur ma page Excel avec mon tableau.

Merci d'avance !

capture png4
Sub Macro()
With Sheets("AE").Columns(14)
For ligne = 2 To 2000
If Cells(ligne, 12).Value = "Inexistant" Then
Cells(ligne, 14).Value = "4"
ElseIf Cells(ligne, 13).Value = "Pas Appliqué" Then
Cells(ligne, 14).Value = "4"
ElseIf (Cells(ligne, 12).Value = "O" Or Cells(ligne, 12).Value = "T" Or Cells(ligne, 12).Value = "H") And Cells(ligne, 13).Value = "Appliqué" Then
Cells(ligne, 14).Value = "3"
ElseIf (Cells(ligne, 12).Value = "O" Or Cells(ligne, 12).Value = "T" Or Cells(ligne, 12).Value = "H") And Cells(ligne, 13).Value = "Partiellement Appliqué" Then
Cells(ligne, 14).Value = "4"
ElseIf (Cells(ligne, 12).Value = "O + T" Or Cells(ligne, 12).Value = "T + H" Or Cells(ligne, 12).Value = "O + H") And Cells(ligne, 13).Value = "Appliqué" Then
Cells(ligne, 14).Value = "2"
ElseIf (Cells(ligne, 12).Value = "O + T" Or Cells(ligne, 12).Value = "T + H" Or Cells(ligne, 12).Value = "O + H") And Cells(ligne, 13).Value = "Partiellement Appliqué" Then
Cells(ligne, 14).Value = "3"
ElseIf Cells(ligne, 12).Value = "O + T + H" And Cells(ligne, 13).Value = "Appliqué" Then
Cells(ligne, 14).Value = "1"
ElseIf Cells(ligne, 12).Value = "O + T + H" And Cells(ligne, 13).Value = "Partiellement Appliqué" Then
Cells(ligne, 14).Value = "2"
Else
Cells(ligne, 14).Value = ""
End If
Next ligne
End With
End Sub

Edit modo : merci de mettre le code entre balises SVP avec le bouton </>

Bonjour Quentin et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
qui vous aideront dans vos demandes et réponses sur ce forum.

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)

Merci pour votre participation

Concernant votre demande, j'ai mis le code entre balises, merci d'y faire attention la prochaine fois
Ensuite, pourquoi vouloir faire ça en VBA alors qu'une formule suffit

A+

Bonjour,

Si le code est vraiment indispensable , le tableau des valeurs et le code ne sont pas en phase ..., exemples : code "Pas appliqué", tableau "Non appliqué", code "O + T + H", tableau "O-T-H".

Je ne comprends pas la phrase "Néanmoins, même si le code est à changé, ma macro ne fonctionne pas lorsque je ferme les onglets et que je suis sur ma page Excel avec mon tableau." ...

Bonjour et bienvenu sur Excel pratique

Un fichier est TOUJOURS le bienvenu

Sub Macro()
With Sheets("AE").Columns(14)
For ligne = 2 To 2000
  select case Cells(ligne, 12).Value 
     case= "Inexistant" 
       Cells(ligne, 14).Value = "4"
     case=" "O" , "T" , "H"
       if Cells(ligne, 13).Value = "Appliqué" Then 
         Cells(ligne, 14).Value = "3"
       elseif Cells(ligne, 13).Value = "Partiellement Appliqué" Then
          Cells(ligne, 14).Value = "4"
       endif
     case = "O + T" , "T + H" , "O + H"
       if Cells(ligne, 13).Value = "Appliqué" Then
           Cells(ligne, 14).Value = "2"
       elseif Cells(ligne, 13).Value = "Partiellement Appliqué" Then
           Cells(ligne, 14).Value = "3"
       endif
     case= "O + T + H"
        if Cells(ligne, 13).Value = "Appliqué" Then
            Cells(ligne, 14).Value = "1"
        ElseIf  Cells(ligne, 13).Value = "Partiellement Appliqué" Then
           Cells(ligne, 14).Value = "2"
        endif
    case Else
       Cells(ligne, 14).Value = ""
  Endselect
Next ligne
End With
End Sub

A+ François

Ps quelle version d'Excel?

Bonjour à tous, dans un premier temps merci de vos réponses, je vais essayer de répondre à chacune de vos interrogations respectives.

Concernant votre code François, j'ai essayé mais cela ne fonctionne pas… Peut-être que je m'y prends mal car comme je l'ai dit, ce sont mes débuts dans les macros Excel. Pour vous répondre, c'est la version la plus récente.

Ensuite pour répondre à Cylfo, la phrase voulait dire que lorsque je quittais la page de ma macro, elle ne fonctionnait pas malgré le fait qu'elle soit programmer. Mais en effet BrunoM45 un code n'est pas indispensable mais la formule mélangerai sûrement des SI, OU, ET. Cependant, je ne suis pas assez expérimenter pour réussir une aussi grosse formule.

Cordialement.

Bonjour

et moi sans fichier...

A+ François

Bonjour,

C'est déjà difficile de créer une solution avec un fichier, alors imaginez sans...

9classeur1.xlsm (32.14 Ko)

Vous trouverez le fichiers dans ce message, les cellules déjà remplies sont les possibilités et leurs résultats.

Comme dit précédemment, Si F2="O" et G2 "Appliqué" alors H2="3" et ainsi de suite...

Voici une proposition par formule en utilisant une clé de recherche:

16classeur1-4.xlsx (35.69 Ko)

Bonjour, j'ai regardé le classeur Ausecour et cela ne marche pas… malheureusement.

Bonjour

Ci joint ma solution

je crains le pire dans ta macro c'est colonne 12,13,14 et dans le fichier joint c'est colonne 6,7,8....

5classeur1.xlsm (35.50 Ko)

A+ François

Merci pour toutes vos réponses, une formules simple à très bien fait l'affaire.

Cordialement

Rechercher des sujets similaires à "probleme vba fonction"