XL 2013 Condition et modification de valeur

BENAM69

XLDnaute Occasionnel
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 !!
 

Pièces jointes

  • Classeur1.xlsm
    20.5 KB · Affichages: 24
Dernière édition:

BENAM69

XLDnaute Occasionnel
Rebonjour,

Je me permets de vous relancer en espérant que quelqu'un aurait une oreille attentive pour m'aider à résoudre ce problème où m'aiguiller pour que j'avance rapidement sur le sujet. Il ne me reste plus qu'à réaliser cette macro et mon fichier est opérationnel pour la mise en place.

Merci par avance de votre aide

Bien à vous,

BENAM
 

Discussions similaires

Statistiques des forums

Discussions
315 090
Messages
2 116 106
Membres
112 661
dernier inscrit
ceucri