lestoiles1
XLDnaute Occasionnel
Bonjour,
J'ai cette vba qui ne fonctionne plus avec mon formule actuel:
Sub commentaire(cellule As Range)
Dim nom As String, madate As Date, commentaireTexte As String
' Effacer tous les commentaires de la feuille
cellule.Parent.UsedRange.ClearComments
' Récupérer le nom (colonne 2 de la ligne de la cellule)
nom = cellule.Parent.Cells(cellule.Row, 2).Value
' Récupérer la date (ligne 3 de la colonne de la cellule)
madate = cellule.Parent.Cells(3, cellule.Column).Value
' Chercher le commentaire correspondant
commentaireTexte = cherchecomment(nom, madate)
' Ajouter un commentaire si trouvé
If Len(Trim(commentaireTexte)) > 0 Then
cellule.AddComment commentaireTexte
End If
End Sub
Function cherchecomment(nom As String, madate As Date) As String
Dim feuilleDetails As Worksheet
Dim dateCell As Range, nomCell As Range
Dim rechercheStart As Range
' Initialiser la feuille "Details"
Set feuilleDetails = Sheets("Details")
' Rechercher la date dans la colonne 8
Set dateCell = feuilleDetails.Columns(8).Find(What:=madate, LookAt:=xlWhole)
' Vérifier si la date existe
If dateCell Is Nothing Then
MsgBox "Aucune activité trouvée pour " & nom & " le " & _
Day(madate) & "-" & StrConv(Format(madate, "mmmm"), vbProperCase) & "-" & Year(madate), _
vbExclamation
Exit Function
End If
' Définir le point de départ pour la recherche du nom
Set rechercheStart = feuilleDetails.Cells(dateCell.Row, 1)
' Rechercher le nom dans la colonne 1 après la date trouvée
Set nomCell = feuilleDetails.Columns(1).Find(What:=nom, After:=rechercheStart, LookAt:=xlWhole)
' Vérifier si le nom existe
If nomCell Is Nothing Then
MsgBox "Aucune activité trouvée pour " & nom & " le " & _
Day(madate) & "-" & StrConv(Format(madate, "mmmm"), vbProperCase) & "-" & Year(madate), _
vbExclamation
Exit Function
End If
' Vérifier la correspondance entre la date et le nom
If Not verif(dateCell, nomCell) Then
MsgBox "Aucune activité trouvée pour " & nom & " le " & _
Day(madate) & "-" & StrConv(Format(madate, "mmmm"), vbProperCase) & "-" & Year(madate), _
vbExclamation
Exit Function
End If
' Retourner le commentaire (colonne 7 de la ligne trouvée)
cherchecomment = feuilleDetails.Cells(nomCell.Row, 7).Value
End Function
Function verif(dateCell As Range, nomCell As Range) As Boolean
' Vérifie si la date trouvée correspond à la date de la ligne du nom
If nomCell.Parent.Cells(nomCell.Row, 8).Value = dateCell.Value Then
verif = True
Else
verif = False
End If
End Function
Avant le 24 Mars j'ai une formule disant : IF(SUMIFS(DETAILS!$F:$F;DETAILS!$H:$H;J$3;DETAILS!$A:$A;$B4)=0;"";SUMIFS(DETAILS!$F:$F;DETAILS!$H:$H;J$3;DETAILS!$A:$A;$B4
Mais a partir du 24 Mars je l'ai changé en : IF(SUMIFS(DETAILS!$F:$F;DETAILS!$H:$H;J$3;DETAILS!$A:$A;$B4)=0;0;SUMIFS(DETAILS!$F:$F;DETAILS!$H:$H;J$3;DETAILS!$A:$A;$B4
Et le code vba ne marche plus lorsque le resultat est 0.
Pouvez vous me donner la solution
J'ai cette vba qui ne fonctionne plus avec mon formule actuel:
Sub commentaire(cellule As Range)
Dim nom As String, madate As Date, commentaireTexte As String
' Effacer tous les commentaires de la feuille
cellule.Parent.UsedRange.ClearComments
' Récupérer le nom (colonne 2 de la ligne de la cellule)
nom = cellule.Parent.Cells(cellule.Row, 2).Value
' Récupérer la date (ligne 3 de la colonne de la cellule)
madate = cellule.Parent.Cells(3, cellule.Column).Value
' Chercher le commentaire correspondant
commentaireTexte = cherchecomment(nom, madate)
' Ajouter un commentaire si trouvé
If Len(Trim(commentaireTexte)) > 0 Then
cellule.AddComment commentaireTexte
End If
End Sub
Function cherchecomment(nom As String, madate As Date) As String
Dim feuilleDetails As Worksheet
Dim dateCell As Range, nomCell As Range
Dim rechercheStart As Range
' Initialiser la feuille "Details"
Set feuilleDetails = Sheets("Details")
' Rechercher la date dans la colonne 8
Set dateCell = feuilleDetails.Columns(8).Find(What:=madate, LookAt:=xlWhole)
' Vérifier si la date existe
If dateCell Is Nothing Then
MsgBox "Aucune activité trouvée pour " & nom & " le " & _
Day(madate) & "-" & StrConv(Format(madate, "mmmm"), vbProperCase) & "-" & Year(madate), _
vbExclamation
Exit Function
End If
' Définir le point de départ pour la recherche du nom
Set rechercheStart = feuilleDetails.Cells(dateCell.Row, 1)
' Rechercher le nom dans la colonne 1 après la date trouvée
Set nomCell = feuilleDetails.Columns(1).Find(What:=nom, After:=rechercheStart, LookAt:=xlWhole)
' Vérifier si le nom existe
If nomCell Is Nothing Then
MsgBox "Aucune activité trouvée pour " & nom & " le " & _
Day(madate) & "-" & StrConv(Format(madate, "mmmm"), vbProperCase) & "-" & Year(madate), _
vbExclamation
Exit Function
End If
' Vérifier la correspondance entre la date et le nom
If Not verif(dateCell, nomCell) Then
MsgBox "Aucune activité trouvée pour " & nom & " le " & _
Day(madate) & "-" & StrConv(Format(madate, "mmmm"), vbProperCase) & "-" & Year(madate), _
vbExclamation
Exit Function
End If
' Retourner le commentaire (colonne 7 de la ligne trouvée)
cherchecomment = feuilleDetails.Cells(nomCell.Row, 7).Value
End Function
Function verif(dateCell As Range, nomCell As Range) As Boolean
' Vérifie si la date trouvée correspond à la date de la ligne du nom
If nomCell.Parent.Cells(nomCell.Row, 8).Value = dateCell.Value Then
verif = True
Else
verif = False
End If
End Function
Avant le 24 Mars j'ai une formule disant : IF(SUMIFS(DETAILS!$F:$F;DETAILS!$H:$H;J$3;DETAILS!$A:$A;$B4)=0;"";SUMIFS(DETAILS!$F:$F;DETAILS!$H:$H;J$3;DETAILS!$A:$A;$B4
Mais a partir du 24 Mars je l'ai changé en : IF(SUMIFS(DETAILS!$F:$F;DETAILS!$H:$H;J$3;DETAILS!$A:$A;$B4)=0;0;SUMIFS(DETAILS!$F:$F;DETAILS!$H:$H;J$3;DETAILS!$A:$A;$B4
Et le code vba ne marche plus lorsque le resultat est 0.
Pouvez vous me donner la solution