Fonction If et ElseIf dans situation complexe

  • Initiateur de la discussion Initiateur de la discussion wilfrid18
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

W

wilfrid18

Guest
Bonjour,
C'est la 1ère fois que je viens sur le forum. Je me présente. Je connais très peu VBA, mais je tente d'écrire un script pour la gestion d'une petite association.
J'ai une macro principale que je dois réécrire car il y a une condition essentielle que j'ai omise. C'est du genre : "If ActiveCell.Value >= Sheets("y").Range("E2") Then Selection.Offset(1, 0).Select" et s'ensuit d'autres codes. Sauf que je dois introduire "ElseIf ActiveCell.Value < Sheets("y").Range("E2")". La macro fonctionnait correctement jusqu'à ce que je rencontre la condition: Quand les dates de la colonne (C:C) sont inférieures à aujourdh'ui.
J'ai essayé pas mal de choses, je n'arrive pas à trouver la solution. Ce que j'ai fait me semble plausible et pourtant cela ne fonctionne pas.
Quelqu'un peut-il m'aider à y voir plus clair ?
J'envoie un petit fichier excel.
Merci d'avance pour toute aide.
 

Pièces jointes

Re : Fonction If et ElseIf dans situation complexe

RE :

Pour une raison qui m"échappe, la zone nommée "za" a disparu de ton fichier alors qu'elle était bien présente dans le mien.

J'ai donc ajouté un test d'existence de cette zone dans la macro (nom de variable "ExistZa" qui prend la valeur True ou False). Si "za" n'est pas trouvée, elle est vréée provisoirement en cellule A1 puis mise à jour dans la suite de la macro.

Code:
Private Sub Workbook_Open()
Dim Cel As Range, Dte As Date, p As Range, za As Range, ExistZa As Boolean
Dte = Sheets("y").Range("E2").Value
Application.ScreenUpdating = False
With Sheets("x")
Set p = .Range("C12:C" & Rows.Count).SpecialCells(xlCellTypeConstants)
  For Each Cel In p
    Cel.Resize(, 11).Font.Bold = (Cel.Value < Dte)
    If Cel.Font.Bold Then
      If za Is Nothing Then
        Set za = Cel.Resize(, 11)
        Else
        Set za = Application.Union(za, Cel.Resize(, 11))
      End If
    End If
  Next
End With
Application.ScreenUpdating = True
For Each nom In ActiveWorkbook.Names
  If nom.Name = "za" Then
    ExistZa = True
    Exit For
  End If
Next
' Si la plage nommée "za" n'existe pas, elle est créée en cellule A1, pour éviter une erreur,
' puis renommée dans les lignes suivantes
If ExistZa = False Then ActiveWorkbook.Names.Add Name:="za", RefersToR1C1:="=x!R1C1"
With ActiveWorkbook.Names("za")
  ' Modification de la plage nommée "za" en fonction de la nouvelle valeur
  .Name = "za"
  .RefersToR1C1 = za
  za.Range("A1").Activate ' Active la cellule en haut et à gauche de la plage "za"
End With
End Sub
 

Pièces jointes

Re : Fonction If et ElseIf dans situation complexe

Salut Papou-net,

Merci pour tout le mal que tu t'es donné. Cela fonctionne. Nous avons bien maintenant une plage nommée za. Je vais pouvoir continuer à adapter le reste de la macro à ton code.
Tout devrait aller bien.
Je vais fermer ce message comme résolu.
Je te souhaite une bonne soirée.
Bravo et merci pour tout
 
Re : Fonction If et ElseIf dans situation complexe

Bonjour,
J'ai utilisé le code de Staple. Il ne fonctionne pas, il ne met plus en gras.
CORRECTION
J'ai utilisé le code de Staple. Je n'arrive pas à le faire fonctionner.
Ce qui est normal car je n'ai pas vu qu'il est indiqué de mettre de le code dans un module standard.
Ce qui implique en plus qu'il fallait lancer la macro manuellement.
En plus je n'ai pas remarqué le jeu de mots foireux dans le nom de la macro.

Tu as raison Wilfrid18, j'ai zappé ton niveau de maîtrise de VBA, et j'aurais pu être plus explicite.
Désolé (...il suffisait pourtant de lire attentivement mon précédent message 😉 )

PS: J'ai utilisé le Bonjour de Wilfrid pour dire Bonjour à tous (par souci d'économie, vu la crise actuelle)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
293
Réponses
2
Affichages
348
Retour