If If If If, ou comment de 1 passer à 2 et de 2 passer à 3

Elcorbo_

XLDnaute Nouveau
Bonchoir à tou(te)s !

Petite (première) question au sujet de Vba :

J'aimerai créer une macro (et son bouton attitré) qui me modifie le texte d'une cellule en fonction du texte déjà présent. Pour faire simple, disons que j'ai des fichiers Excel à modifier tous les mois, et qu'au lieu de changer le nom des mois à la main, je veuille le faire en cliquant sur un bouton-macro.
L'idée, c'est que si la colonne A1 indique "janvier", je clique sur le bouton et elle indique "février".
Si la colonne A1 indique "février", je clique sur le bouton et elle indique "mars".
Et ainsi de suite.

J'ai essayé plusieurs If, des ElseIf, bref des trucs glanés sur le net, mais soit ça ne suffit pas, soit ma syntaxe est anarchique. Quelqu'un peut me filer un tuyau ?

Merchi =)
 

Gareth

XLDnaute Impliqué
Re : If If If If, ou comment de 1 passer à 2 et de 2 passer à 3

Bonsoir,

Ci-joint un exemple à adapter ...

@ Rachid
En A1, =AUJOURDHUI() avec la cellule formatée au format personnalisé "mmmm"
 

Pièces jointes

  • Classeur1.xls
    35.5 KB · Affichages: 43
  • Classeur1.xls
    35.5 KB · Affichages: 55
  • Classeur1.xls
    35.5 KB · Affichages: 55
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : If If If If, ou comment de 1 passer à 2 et de 2 passer à 3

Bonsoir Elcorbo_, à tous,

Si tu tiens à garder le contrôle du passage au mois suivant (au lieu des élégantes solutions automatiques de R@chid et Gareth), tu peux placer la macro VBA suivante dans le module de code de la Feuille où se trouve la cellule à modifier (ici cellule A1):
VB:
Sub IncrMois()
  [A1] = Format(CDate("1-" & [A1] & "-5") + 40, "mmmm")
End Sub
 

Pièces jointes

  • Mois suivant.xls
    33 KB · Affichages: 53
Dernière édition:

Elcorbo_

XLDnaute Nouveau
Re : If If If If, ou comment de 1 passer à 2 et de 2 passer à 3

Mince, je me sens bête...
L'utilisation des termes "janvier", "février" etc n'était en fait qu'un exemple.
En fait les fichiers que j'utilise n'usent pas de la même chronologie que la notre. Les mois ne sont pas appelés de la même façon. Donc je cherchais plutôt une macro pour passer d'un texte à l'autre, quel que soit le texte à modifier, et non pas forcément un format date.

Imaginons une cellule A1 contenant "rouge".
Ma macro dirait : "si la cellule A1 = rouge, alors écrire dans A1 = vert".
La même macro dirait : "si la cellule A1 = vert, alors écrire dans A1 = jaune".
La même macro dirait : "si la cellule A1 = jaune, alors écrire dans A1 = rouge".

Du coup on arrive à une boucle. En essayant avec des If, la cellule ne change pas, ou alors change trop vite pour mes yeux, et revient au mot d'origine.

Le but c'est juste "d'avancer" dans la suite de mot. Ici on a rouge vert jaune. En cliquant, je veux juste écrire la couleur (donc le mot) suivant dans la liste.

J'espère être clair, excusez moi si ce n'est pas le cas, et merci énormément pour votre réactivité !
Autant de messages aussi rapidement (et à cette heure-ci) c'est wahouuu les copaings. GG

Merci d'avance pour votre aide future=)

EDIT =
Après test, le fichier exemple de Gareth était nickel. C'est exactement le genre de bouton qu'il me faut : mais en pouvant remplacer nos mois classiques par d'autres appellations.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : If If If If, ou comment de 1 passer à 2 et de 2 passer à 3

Bonjour Elcorbo_,
je cherchais plutôt une macro pour passer d'un texte à l'autre, quel que soit le texte à modifier, et non pas forcément un format date.

Voir la macro suivante:
VB:
Sub IncrMois()
Const Vals = "premier,janvier,chaussure,réveil,souris,rigolo,sérieux,pelle à tarte,dernier"
Dim v, i As Long
v = Split(Vals, ",")
For i = LBound(v) To UBound(v)
  If v(i) = [A1] Then Exit For
Next i

If i > UBound(v) Then
  'si pas trouvé,
  MsgBox "Mot:   " & [A1] & "   pas dans la liste"
ElseIf i = UBound(v) Then
  ' le mot est en fin de liste, on affiche le 1er élément de la liste
  [A1] = v(LBound(v))
Else
  ' on affiche l'élément suivant de la liste
  [A1] = v(i + 1)
End If

End Sub
 

Pièces jointes

  • Mot suivant.xls
    31.5 KB · Affichages: 45

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : If If If If, ou comment de 1 passer à 2 et de 2 passer à 3

Bonjour Elcorbo_,

la même chose mais avec la liste située sur la feuille en colonne M.
le code dans le module de code de la Feuil1:
VB:
Sub IncrMois()
Dim v, i As Long

v = Range("M1", Range("M" & Rows.Count).End(xlUp)).Value
For i = LBound(v) To UBound(v)
  If v(i, 1) = [A1] Then Exit For
Next i

If i > UBound(v) Then
  'si pas trouvé,
  MsgBox "Mot:   " & [A1] & "   pas dans la liste"
ElseIf i = UBound(v) Then
  ' le mot est en fin de liste, on affiche le 1er élément de la liste
  [A1] = v(LBound(v), 1)
Else
  ' on affiche l'élément suivant de la liste
  [A1] = v(i + 1, 1)
End If

End Sub
 

Pièces jointes

  • Mot suivant v2.xls
    31.5 KB · Affichages: 52

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 196
Membres
103 153
dernier inscrit
SamirN