Codage VBA - If ... Elseif ... Then - Novice

Bonjour,
Je suis entrain d'éssayer de coder une action afin de gagner du temps, cependant je n'ai jamais fait de VBA et j'ai quelque base en codage mais j'ai compris aujourd'hui que je ne pouvais plus appeller ca "base"
Je cherche donc une ame charitable qui serait capable de m'aider à réaliser ce petit bout de code que je pense pas bien compliqué en soit pour quelqu'un qui si connait.

J'ai essayé de formuler ce bout de code en vba avec If ... Elseif ... Then...

Voici ce que j'aimerais faire :

'je me place dans la feuille Feuil1'

'Je me place a partir de la ligne 12 en colonne J et L'

'Première condition'
'si dans la case J12 correspond à "Expertise" et que la case L12 correspond à "Critique 1"'
'alors changer la valeur "Expertise" en "Actu 1" et changer la valeur "Critique 1" en "Critique 2"'

'Deuxième condition'
'si la case J12 correspond à "Actu 1" et que la case L12 correspond à "Critique 2"'
'alors changer la valeur "Actu 1" en "Actu 2" et changer la valeur "Critique 2" en "Critique 3"'

'Troisieme condition'
'si la case J12 correspond à "Actu 2" et que la case L12 correspond à "Critique 3"'
'alors changer la valeur "Actu 2" en "Actu 3" et changer la valeur "Critique 3" en "Critique 4"'

'Quatrieme condition'
'si la case J12 correspond à "Actu 3" et que la case L12 correspond à "Critique 4"'
'alors changer la valeur "Actu 3" en "Expertise" et changer la valeur "Critique 4" en "Critique 1"'
'Et Switcher les cases I12 et K12'

'Passer a la ligne suivante'

'arreter si case vide'

Merci d'avance,
aux ames charitables

Vrus

5 réponses

  1. J'ai reussi,
    maintenant je suis confronté a un autre problème c'est que j'aimerais switcher deux valeur présente dans deux autre colonne lorsque les conditions "Expertise" et "Critique 1" sont reunies

    je vous fourni ce que j'ai fait :

    Dim ligne As Integer
    Dim colonne As Integer

    ligne = 12
    colonne = 10

    Do

    If Cells(ligne, colonne).Value = "Expertise" Then

    Cells(ligne, colonne).Value = "Actualisation 1"

    ElseIf Cells(ligne, colonne).Value = "Actualisation 1" Then

    Cells(ligne, colonne).Value = "Actualisation 2"

    ElseIf Cells(ligne, colonne).Value = "Actualisation 2" Then

    Cells(ligne, colonne).Value = "Actualisation 3"

    ElseIf Cells(ligne, colonne).Value = "Actualisation 3" Then

    Cells(ligne, colonne).Value = "Expertise"

    Else
    End If

    ligne = ligne + 1

    Loop While Cells(ligne, colonne).Value <> 0

    ligne = 12
    colonne = 12

    Do

    If Cells(ligne, colonne).Value = "Critique 1" Then

    Cells(ligne, colonne).Value = "Critique 2"

    ElseIf Cells(ligne, colonne).Value = "Critique 2" Then

    Cells(ligne, colonne).Value = "Critique 3"

    ElseIf Cells(ligne, colonne).Value = "Critique 3" Then

    Cells(ligne, colonne).Value = "Critique 4"

    ElseIf Cells(ligne, colonne).Value = "Critique 4" Then

    Cells(ligne, colonne).Value = "Critique 1"

    Else
    End If

    ligne = ligne + 1

    Loop While Cells(ligne, colonne).Value <> 0
    0
    1. Re,
      Ca ne vous derangerait pas de mettre le code complet pour voir le debut et la fin
      0
  2. Bonjour
    je préfère le Select case

    Sub TestM()
        Select Case Range("J12").Value
          Case "Expertise"
            Range("J12").Value = "Actu 1"
          Case "Actu 1"
            Range("J12").Value = "Actu 2"
          Case "Actu 2"
            Range("J12").Value = "Actu 3"
         End Select
    End Sub
    

    A+
    Maurice
    0
    1. Bonjour,

      Select Case End Select
      est plus lent en execution que
      If ElseIf End If

      Mais c'est vous qui voyez
      0
  3. Super merci je venais en effet de me rendre compte de l'importance du retour a la ligne aprés Then...

    Maintenant j'aimerais appliquer cette fonction a une plage (colonne...)
    toute la colonne J a partir de la ligne 12

    Mais la macro va être lente alors j'aimerais que sa actualise juste les cases avec une valeur et non pas les cases vide.

    Ou sinon simple faire une plage de J12:J100 ce qui sera suffisant

    Je suis entrain de chercher
    0
    1. Re,
      le code que j'ai mis montre la structure.
      Comment allez vous lancer le code de mise a jour, c'est cela qui va determiner marche ou pas
      0
  4. Bonjour, merci de votre réponse, je ne cherche pas a boucler sans fin, mais simplement à avoir un système booléen qui me permet de revenir a mon point de départ...

    En gros une fois arrivé à Actu 3 J'aimerais qu'il se produise une autre action et que le code reparte a l'action 1 qui dans le cas du dessus serais ecrire Expertise.

    Pensez vous que c'est réalisable ?

    J'ai commencer a écrire cela qui marche mais juste sur une action et sur une cellule ...

    Dim cell As String, ex As String
    cell = Range("J12").Value

    If cell = "Expertise" Then ex = "Actu 1"

    Range("J12").Value = ex


    Quand j'essai d'intégrer un ElseIf cela ne marche plus :

    Dim cell As String, ex As String
    cell = Range("J12").Value

    If cell = "Expertise" Then ex = "Actu 1"

    Range("J12").Value = ex

    ElseIf cell = "Actu 1" Then ex = "Actu 2"

    Range("J12").Value = ex

    ElseIf cell = "Actu 2" Then ex = "Actu 3"

    Range("J12").Value = ex


    J'avance tranquillement mais je crain de ne jamais y arriver ... lol :/
    0
    1. Re,
      structure if elseif elseif else end if
      Sub test()
          Dim cell As String
      
          cell = Range("J12").Value
          If cell = "Expertise" Then
              Range("J12").Value = "Actu 1"
          ElseIf cell = "Actu 1" Then
              Range("J12").Value = "Actu 2"
          ElseIf cell = "Actu 2" Then
              Range("J12").Value = "Actu 3"
          Else
          End If
      End Sub
      
      0
  5. Bonjour,
    Peut pas marcher votre code, vous mettez les conditons pour boucler sans fin d'ou erreur excel !!
    0