Bonjour,
Je me permets de vous solliciter, je n'arrive pas à réaliser une macro qui vérifie les colonnes et qui me modifie automatiquement des valeurs. Peux-être que vous pourrez m'aider à résoudre mon problème ?
Voici l'explication de la macro souhaitée :
J'ai besoin de vérifier les données du deuxième onglet pour modifier des valeurs dans le premier onglet.
Voila les conditions :
Si dans le premier onglet FORMATION USINAGE, sur la colonne D démarrage en D7, s'il y a le chiffre 1, alors il va sur le deuxième onglet SUIVI DE FORMATION et vérifie
Si le type le Type de programme + Nom de l'opérateur + Secteur + Activité sont identiques aux informations liées à l'opérateur ET la date d'aujourd'hui > Date de fin (si la condition répond positivement)
ALORS sur l'onglet "FORMATION USINAGE" , il change le chiffre 1 (colonne en D de "NIVEAU") en chiffre 2 et change aussi la date de formation inscrite en colonne E de la même ligne en Prochaine date de formation (Date de formation Colonne E + Durée de formation Colonne Z + Tournus colonne AB).
Une fois fini, il fait de même avec toutes les lignes et colonnes Niveau et Date de formation (soit une boucle FOR)
Je vous mets en Pièce jointe le fichier pour que vous puissiez travailler dessus, c'est plus simple.
J'ai déjà essayé quelque chose mais en vain, je ne sais pas comparer les informations de deux onglets correctement avec une boucle qui vérifie et qui plu est, les autres colonnes NIVEAU ne se modifient pas
Voici ce que j'ai déjà fait, Au début, je me suis dit qu'il n'est pas nécessaire de comparer avec l'autre onglet. mais c'est quand j'ai voulu modifier le chiffre 2 en chiffre 3 avec les mêmes conditions que cela déconne. En effet, une fois que le chiffre 1 devient 2, il ne doit pas changer tout de suite, il doit vérifier à nouveau les conditions, mais il ne le fait pas parce que une fois que la condition avec le changement chiffre 1 en 2, la date d'aujourd'hui se change en prochaine date de formation donc une date supérieure à la date d'aujourd'hui. Donc, pour passer de 2 à 3 on doit attendre que cette nouvelle date de formation devienne inférieure à la date d'aujourd'hui. Mais ça ne prend pas en compte.
Sub Test ()
For Each i In Range("D7: D10, F7:F10, H7:H10, J7:J10, L7:L10, N7:N10, P7 : P10, R7:R10, T7:T10, V7:V10, X7:X10")
If i = 1 And i.Offset(0, 1) <> "" Then
If Date > i.Offset(0, 1) + Cells(i.Row, 26) Then
Cells(i.Row, 4) = 2
i.Offset(0, 1) = i.Offset(0, 1) + Cells(i.Row, 26) + Cells(i.Row, 28)
i = i + 1
End If
End If
If i = 2 And i.Offset(0, 1) <> "" Then
If Date > i.Offset(0, 1) + Cells(i.Row, 26) Then
Cells(i.Row, 4) = 3
i.Offset(0, 1) = i.Offset(0, 1) + Cells(i.Row, 26) + Cells(i.Row, 28)
i = i + 1
End If
End If
Next i
End Sub
Je vous remercie en tout cas pour votre aide et espère avoir été clair dans mes explications et mon besoin.
Bien à vous !!
Je me permets de vous solliciter, je n'arrive pas à réaliser une macro qui vérifie les colonnes et qui me modifie automatiquement des valeurs. Peux-être que vous pourrez m'aider à résoudre mon problème ?
Voici l'explication de la macro souhaitée :
J'ai besoin de vérifier les données du deuxième onglet pour modifier des valeurs dans le premier onglet.
Voila les conditions :
Si dans le premier onglet FORMATION USINAGE, sur la colonne D démarrage en D7, s'il y a le chiffre 1, alors il va sur le deuxième onglet SUIVI DE FORMATION et vérifie
Si le type le Type de programme + Nom de l'opérateur + Secteur + Activité sont identiques aux informations liées à l'opérateur ET la date d'aujourd'hui > Date de fin (si la condition répond positivement)
ALORS sur l'onglet "FORMATION USINAGE" , il change le chiffre 1 (colonne en D de "NIVEAU") en chiffre 2 et change aussi la date de formation inscrite en colonne E de la même ligne en Prochaine date de formation (Date de formation Colonne E + Durée de formation Colonne Z + Tournus colonne AB).
Une fois fini, il fait de même avec toutes les lignes et colonnes Niveau et Date de formation (soit une boucle FOR)
Je vous mets en Pièce jointe le fichier pour que vous puissiez travailler dessus, c'est plus simple.
J'ai déjà essayé quelque chose mais en vain, je ne sais pas comparer les informations de deux onglets correctement avec une boucle qui vérifie et qui plu est, les autres colonnes NIVEAU ne se modifient pas
Voici ce que j'ai déjà fait, Au début, je me suis dit qu'il n'est pas nécessaire de comparer avec l'autre onglet. mais c'est quand j'ai voulu modifier le chiffre 2 en chiffre 3 avec les mêmes conditions que cela déconne. En effet, une fois que le chiffre 1 devient 2, il ne doit pas changer tout de suite, il doit vérifier à nouveau les conditions, mais il ne le fait pas parce que une fois que la condition avec le changement chiffre 1 en 2, la date d'aujourd'hui se change en prochaine date de formation donc une date supérieure à la date d'aujourd'hui. Donc, pour passer de 2 à 3 on doit attendre que cette nouvelle date de formation devienne inférieure à la date d'aujourd'hui. Mais ça ne prend pas en compte.
Sub Test ()
For Each i In Range("D7: D10, F7:F10, H7:H10, J7:J10, L7:L10, N7:N10, P7 : P10, R7:R10, T7:T10, V7:V10, X7:X10")
If i = 1 And i.Offset(0, 1) <> "" Then
If Date > i.Offset(0, 1) + Cells(i.Row, 26) Then
Cells(i.Row, 4) = 2
i.Offset(0, 1) = i.Offset(0, 1) + Cells(i.Row, 26) + Cells(i.Row, 28)
i = i + 1
End If
End If
If i = 2 And i.Offset(0, 1) <> "" Then
If Date > i.Offset(0, 1) + Cells(i.Row, 26) Then
Cells(i.Row, 4) = 3
i.Offset(0, 1) = i.Offset(0, 1) + Cells(i.Row, 26) + Cells(i.Row, 28)
i = i + 1
End If
End If
Next i
End Sub
Je vous remercie en tout cas pour votre aide et espère avoir été clair dans mes explications et mon besoin.
Bien à vous !!
Pièces jointes
Dernière édition: