luke3300
XLDnaute Impliqué
Bonjour le forum,
Il y a déjà quelques années, l'un de vous m'avait concocté une macro qui me permettait de détecter des mises à jour de tâches dans une grille. Celle-ci fonctionnait parfaitement mais je dois mettre à jour mon fichier et je n'arrive pas à modifier correctement la macro pour que cela fonctionne comme avant.
Je vous joint un fichier avec exemple.
Et voici le code:
Sub Detection()
Dim nom As Integer, tachesNouvelles As Integer, tacheAncienne As Range
Dim colTache As Range, ligneNom As Range, estCapable As Integer
For nom = 12 To 60 =======> ici ça commencera à la ligne 10 de la colonne D
For tachesNouvelles = 2 To 51 ===========> les tâches nouvelles iront de la ligne 6 (et plus 4), colonne F jusqu'à DA
estCapable = 1
Set tacheAncienne = ThisWorkbook.Sheets("NOUVEAU").Cells(5, tachesNouvelles)
With ThisWorkbook.Sheets("ANCIEN")
While tacheAncienne.Row < 17
If tacheAncienne.Value <> vbNullString Then
Set colTache = .Rows(4).Find(what:=tacheAncienne.Value, LookIn:=xlValues, lookat:=xlWhole)
Set ligneNom = .Columns(1).Find(what:=ThisWorkbook.Sheets("NOUVEAU").Range("A" & nom).Value, LookIn:=xlValues, lookat:=xlWhole)
If ligneNom Is Nothing Then
estCapable = 0
Else
If Not colTache Is Nothing Then
estCapable = estCapable * IIf(.Cells(ligneNom.Row, colTache.Column).Value = 1, 1, 0)
End If
End If
End If
Set tacheAncienne = tacheAncienne.Offset(1, 0)
Wend
End With
If ThisWorkbook.Sheets("NOUVEAU").Cells(5, tachesNouvelles).Value = vbNullString Then estCapable = 0
ThisWorkbook.Sheets("NOUVEAU").Cells(nom, tachesNouvelles).Value = IIf(estCapable = 1, 1, "")
Next tachesNouvelles
Next nom
End Sub
J'ai déjà essayé d'adapter le code mais il ne fonctionne pas ...
Merci d'avance.
Il y a déjà quelques années, l'un de vous m'avait concocté une macro qui me permettait de détecter des mises à jour de tâches dans une grille. Celle-ci fonctionnait parfaitement mais je dois mettre à jour mon fichier et je n'arrive pas à modifier correctement la macro pour que cela fonctionne comme avant.
Je vous joint un fichier avec exemple.
Et voici le code:
Sub Detection()
Dim nom As Integer, tachesNouvelles As Integer, tacheAncienne As Range
Dim colTache As Range, ligneNom As Range, estCapable As Integer
For nom = 12 To 60 =======> ici ça commencera à la ligne 10 de la colonne D
For tachesNouvelles = 2 To 51 ===========> les tâches nouvelles iront de la ligne 6 (et plus 4), colonne F jusqu'à DA
estCapable = 1
Set tacheAncienne = ThisWorkbook.Sheets("NOUVEAU").Cells(5, tachesNouvelles)
With ThisWorkbook.Sheets("ANCIEN")
While tacheAncienne.Row < 17
If tacheAncienne.Value <> vbNullString Then
Set colTache = .Rows(4).Find(what:=tacheAncienne.Value, LookIn:=xlValues, lookat:=xlWhole)
Set ligneNom = .Columns(1).Find(what:=ThisWorkbook.Sheets("NOUVEAU").Range("A" & nom).Value, LookIn:=xlValues, lookat:=xlWhole)
If ligneNom Is Nothing Then
estCapable = 0
Else
If Not colTache Is Nothing Then
estCapable = estCapable * IIf(.Cells(ligneNom.Row, colTache.Column).Value = 1, 1, 0)
End If
End If
End If
Set tacheAncienne = tacheAncienne.Offset(1, 0)
Wend
End With
If ThisWorkbook.Sheets("NOUVEAU").Cells(5, tachesNouvelles).Value = vbNullString Then estCapable = 0
ThisWorkbook.Sheets("NOUVEAU").Cells(nom, tachesNouvelles).Value = IIf(estCapable = 1, 1, "")
Next tachesNouvelles
Next nom
End Sub
J'ai déjà essayé d'adapter le code mais il ne fonctionne pas ...
Merci d'avance.