Fonction If et ElseIf dans situation complexe

wilfrid18

XLDnaute Nouveau
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

  • Classeur3.xlsm
    57 KB · Affichages: 56
  • Classeur3.xlsm
    57 KB · Affichages: 53
  • Classeur3.xlsm
    57 KB · Affichages: 57

Papou-net

XLDnaute Barbatruc
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

  • Classeur3-4.xlsm
    36.6 KB · Affichages: 37

wilfrid18

XLDnaute Nouveau
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
 

Staple1600

XLDnaute Barbatruc
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:

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 689
Membres
103 639
dernier inscrit
NIEMASAFI