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

Fermé
Vrus75 Messages postés 4 Date d'inscription mercredi 25 janvier 2017 Statut Membre Dernière intervention 25 janvier 2017 - 25 janv. 2017 à 15:01
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 - 25 janv. 2017 à 18:49
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
A voir également:

5 réponses

f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
25 janv. 2017 à 17:08
Bonjour,
Peut pas marcher votre code, vous mettez les conditons pour boucler sans fin d'ou erreur excel !!
0
Vrus75 Messages postés 4 Date d'inscription mercredi 25 janvier 2017 Statut Membre Dernière intervention 25 janvier 2017
25 janv. 2017 à 17:14
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
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
Modifié par f894009 le 25/01/2017 à 17:23
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
Vrus75 Messages postés 4 Date d'inscription mercredi 25 janvier 2017 Statut Membre Dernière intervention 25 janvier 2017
25 janv. 2017 à 17:53
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
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
25 janv. 2017 à 18:30
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
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
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
Modifié par f894009 le 25/01/2017 à 18:47
Bonjour,

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

Mais c'est vous qui voyez
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vrus75 Messages postés 4 Date d'inscription mercredi 25 janvier 2017 Statut Membre Dernière intervention 25 janvier 2017
25 janv. 2017 à 18:33
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
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
25 janv. 2017 à 18:49
Re,
Ca ne vous derangerait pas de mettre le code complet pour voir le debut et la fin
0