Passage de variable avec clic sur cellule

Bonjour à tous,

j'ai un code appelant une macro quand je clic sur une cellule:

    If Not Intersect(Target, Range("AZ10")) Is Nothing Then
    ToBeDone.Show
     End If

    If Not Intersect(Target, Range("AZ11")) Is Nothing Then
    ToBeDone.Show
     End If

Vous allez vous dire et vous avez raison cela appelle la même macro

seulement voila au sein de la macro j'ai donc 2 possibilités à ce stade

si clic AZ10 ca doit chercher la date du jour

si clic AZ11 ca doit faire la recherche weeday (encore merci à steelson pour sa solution)

Recherche sur jour

     If TblBD(i, 4) = Date Then

recherche sur semaine

   If (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7) Then

j'ajouterais à cela la recherche mensuelle

mais j'aimerais déjà savoir comment procéder afin de faire en sorte que si je clic sur AZ11 par exemple non seulement ca appelle le form mais que le if se fasse sur la recherche weekday

par contre si clic sur AZ10 alors non seulement ca appelle le form mais que le if se fasse sur la recherche date

merci à vous par avance,

Bonne journée

Re-Bonjour,

Tu peux dans ta macro tester la cellule appelante

if selection.address = "$AZ$10" then
' bla bla
elseif  selection.address = "$AZ$11" then
' ble ble
end if

merci mais cela ne fonctionne hélas pas

If Selection.Address = "$AZ$10" Then
MsgBox ("10")
ElseIf Selection.Address = "$AZ$11" Then
MsgBox ("11")
Else
MsgBox ("none")
End If

je viens de tester et à chaque fois none apparaît peut importe sur quoi je clic

mais cela ne s'applique pas que sur les boutons?

par contre quand je test

ActiveCell.Address

cela me renvoi bien la bonne cellule d'appelle donc bon..

mais maintenant comment adapter une ligne de if dans un autre if:

If (ActiveCell.Address = "$AZ$10") Then
 il faut ici le if de date du jour
ElseIf (ActiveCell.Address = "$AZ$11") Then
il faut ici le if de date semaine
End If

date du jour

'If TblBD(i, 4) = Date Then

date semaine

'If (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7) Then

Salut,

La c'est un autre souci, testes la syntaxe suivante :

If (ActiveCell.Address = "$AZ$10") Then
    If TblBD(i, 4) = Date Then
    'Truc si Vrai
    Else
    'Eventuellement truc si Faux
    End If
ElseIf (ActiveCell.Address = "$AZ$11") Then
    If (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7) Then
    'Truc si Vrai
    Else
    'Eventuellement truc si Faux
    End If
End If

merci mais c'est justement là le soucis car c'est le même code qui s'applique après.

c'est juste le if de recherche qui change avant..

@Darkangel

Peux-tu mettre un exemple de ce que tu souhaites sur un fichier simplifié ?

Bonjour,

Plutôt que ton Else, c'est sans doute mieux de quitter dès le Selection_Change si sélection de plusieurs cellules.

eric

bien sur steelson, je vais préparer le fichier mais le problème réside tout simplement ici:

ce que je souhaites

si clic sur AZ10 alors

If (ActiveCell.Address = "$AZ$10") Then
'If TblBD(i, 4) = Date Then

Si clic sur AZ11 alors

ElseIf (ActiveCell.Address = "$AZ$11") Then

'If (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7) Then
End If

le code d'affichage en listbox restant similaire après

mais je test comme cela ca me met next sans for à la ligne next i

Public Sub List_ToBeDone()
   ColVisu = Array(1, 2, 3, 5, 6)
    LargeurCol = Array(1, 35, 80, 39, 45)

  nomtableau = "T_Tasks"
  TblBD = Range(nomtableau)
  List_Tasks_tobedone.ColumnCount = Range(nomtableau).Columns.Count
 List_Tasks_tobedone.ColumnWidths = Join(LargeurCol, ";")

    Dim Tbl()
  For i = 1 To UBound(TblBD)

If (ActiveCell.Address = "$AZ$10") Then
If TblBD(i, 4) = Date Then
ElseIf (ActiveCell.Address = "$AZ$11") Then
If (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7) Then
End If

        n = n + 1: ReDim Preserve Tbl(1 To UBound(TblBD, 2), 1 To n)
         c = 0
         For Each K In ColVisu
           c = c + 1: Tbl(c, n) = TblBD(i, K)
         Next K
     End If
   Next i
   If n > 0 Then List_Tasks_tobedone.Column = Tbl Else List_Tasks_tobedone.Clear
End Sub

bien sur steelson, je vais préparer le fichier mais le problème réside tout simplement ici:

et c'est tellement plus facile pour tous ... https://forum.excel-pratique.com/viewtopic.php?f=2&t=13

voila un fichier

2probleme-if.xlsm (17.49 Ko)

le problème résidant:

' c'est le soucis
If (ActiveCell.Address = "$AZ$10") Then
'cas ou jour
If TblBD(i, 4) = Date Then
ElseIf (ActiveCell.Address = "$AZ$11") Then
'cas ou semaine
If (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7) Then
End If

ceci ne peut pas fonctionner ...

If (ActiveCell.Address = "$AZ$10") Then
If TblBD(i, 4) = Date Then
ElseIf (ActiveCell.Address = "$AZ$11") Then
If (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7) Then
End If

indente le code, il manque des instructions ...

If (ActiveCell.Address = "$AZ$10") Then
    If TblBD(i, 4) = Date Then
        ' je fais ceci
    End If
ElseIf (ActiveCell.Address = "$AZ$11") Then
    If (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7) Then
        ' je fais cela
    End If
End If

ok mais cela revient à copier coller deux fois le même code d'ou mon questionnement

If ((ActiveCell.Address = "$AZ$10") And TblBD(i, 4)) = Date Or ((ActiveCell.Address = "$AZ$11") And (TblBD(i, 4) >= Date - Weekday(Date, vbMonday) + 1) And (TblBD(i, 4) <= Date - Weekday(Date, vbMonday) + 7)) Then

super voila une solution optimisée

merci à vous Steelson pour votre aide

Rechercher des sujets similaires à "passage variable clic"