Sélectionner par rapport à deux variables

Résolu/Fermé
Neoplook Messages postés 20 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 24 décembre 2015 - 7 oct. 2015 à 12:57
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 7 oct. 2015 à 17:48
Bonjour amis internautes !

Je suis novice sur VBA, et je bloque très durement sur une partie de ma programmation. J'aimerais recevoir un peu d'aide de la part d'un bon samaritain et je m'excuse d'avance si mes explications ne sont pas claire:
Je vous détail le concept :

La feuille 1 comprend 3 cellules :
-La cellule A10 est un nombre;
-la cellule B10 est une date sous la forme jj/mm/aa;
-la cellule C10 est un niveau d'urgence allant de 1 à 3.



-je pars de la feuille 1;

-je vérifie la valeur que prend C10 ;

-si la valeur de C10 est 1 et que *la date d'aujourd'hui - B10* >=45 (qui est le nombre de jours d'écart entre ces deux dates), alors je copie A10 et B10 sur la feuille 2 cellule A8 et B8;

-si la valeur de C10 est 2 et que le nombre de jours*>=20, alors je copie A10 et B10 sur la feuille 2 cellule C8 et D8;

-si la valeur de C10 est 3 et que le nombre de jours*>=10, alors je copie A10 et B10 sur la feuille 2 cellule E8 et F8;

-si le nombre de jours est inférieur aux valeurs indiquées ci-dessus, rien ne se passe.

Oui mais voilà, en réalité, j'ai plein de lignes sur la feuille 1, et du coup, je dois automatiser ce système pour qu'il traite toutes les lignes une à une de cette feuille et, copie/colle sur la feuille 2 quand il le faut, et ce, toujours ligne par ligne.

J'ai espionné les forums des jours durant, j'ai récolté des informations très intéressantes mais je n'arrive pas à les exploiter. Je sais qu'il y à une histoire de "jusqu'à la dernière cellule non vide" sur la première feuille et qu'il y à une histoire de "à partir de la première cellule vide" sur la deuxième (pour ne pas superposer les Copier/Coller), une autre histoire avec Next, mais rien n'y fais..

Bref je suis en détresse mes amis :/

1 réponse

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
7 oct. 2015 à 13:39
Bonjour,

Bref, pourquoi utiliser VBA pour ça ?
https://www.cjoint.com/c/EJhlM0Wk14J
J'ai mis des choses dans les cellules surlignées en jaune.

A+
0
Neoplook Messages postés 20 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 24 décembre 2015
7 oct. 2015 à 14:03
Bonjour Zoul67,
Pourquoi utiliser VBA pour ça ?
Eh bien simplement parce qu'il n'y a pas "Que" ça dans mon programme, à chaque ouverture la feuille 2 est réinitialisée pour permettre un nouveau remplissage avec, si il y a, de nouvelles valeurs.

Je te remercie d'avoir répondu, mais hélas ça ne répond pas à mes attentes. Si je pouvais passer par une formule comme celle-ci, je l'aurais fais moi-même, mais ce n'est pas le cas. J'ai besoin de VBA.
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
7 oct. 2015 à 14:14
J'espère bien qu'il n'y a pas que ces dates dans ton fichier, mais les formules sont évaluées à chaque modification.
S'il n'y a que ces dates dans les colonnes A à F dans la Feuil2, je ne vois pas pourquoi les formules ne sont pas applicables.
S'il n'y a pas de problème de confidentialité, tu peux fournir ton fichier via https://www.cjoint.com/ et si ça nécessite du code VBA, cela devrait être dans mes cordes.
0
Neoplook Messages postés 20 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 24 décembre 2015
7 oct. 2015 à 16:37
Je te remercie de bien vouloir m'aider.
Voici le lien : http://www.cjoint.com/c/EJhoJ3BDWbT
L'équivalent de la feuille 1 est "Interventions", l'équivalent de la feuille 2 est "Alertes".
0
Neoplook Messages postés 20 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 24 décembre 2015
7 oct. 2015 à 16:41
Les variables sont comprises dans les colonnes B et K, la colonne A et la colonne B contiennent les cellules que je suis sensé copier coller dans la feuille "Alertes" en fonction de la colonne K, niveau d'urgence 1 validé pour le nombre de jours >=45, niveau d'urgence 2 >=20 et niveau d'urgence 3 >=10
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
7 oct. 2015 à 17:48
Puisque tu as demandé du code, le voila :
Sub Alertes()
    Dim i As Integer
    i = 10
    While Sheets("Interventions").Cells(i, 1).Value <> ""
        A = Sheets("Interventions").Cells(i, 1).Value
        B = Sheets("Interventions").Cells(i, 2).Value
        K = Sheets("Interventions").Cells(i, 11).Value
        M = Sheets("Interventions").Cells(i, 13).Value
        If M = "" Then
            If K = 1 And (Date - B) >= 45 Then
                Sheets("Alertes").Rows(8).Insert
                Sheets("Alertes").Cells(8, 1).Value = A
                Sheets("Alertes").Cells(8, 2).Value = B
            ElseIf K = 2 And (Date - B) >= 20 Then
                Sheets("Alertes").Rows(8).Insert
                Sheets("Alertes").Cells(8, 3).Value = A
                Sheets("Alertes").Cells(8, 4).Value = B
            ElseIf K = 3 And (Date - B) >= 10 Then
                Sheets("Alertes").Rows(8).Insert
                Sheets("Alertes").Cells(8, 5).Value = A
                Sheets("Alertes").Cells(8, 6).Value = B
            End If
        End If
        i = i + 1
    Wend

End Sub


Pour tous : il s'agit de lister dans la feuille 2 ("alertes") les seules interventions non terminées par niveau d'urgence (j'ai supposé qu'il ne fallait pas de ligne vide, sinon des formules auraient fait l'affaire).

Toutefois, j'ai pas mal de commentaires sur l'ensemble du fichier...
- plutôt que des boutons pour accéder aux feuilles ou à un emplacement spécifique d'une feuille (nécessitant du code), pourquoi ne pas utiliser des liens hypertexte (=> suppressions des modules 1 et 7) ?
- un contrôle de complétude devrait être effectué avant ajout d'une intervention
- j'assemblerais les onglets ajout intervention, interventions et alertes dans le même onglet (=> on fait apparaître les alertes par mise en forme conditionnelle) ; le tableau récapitulatif des alertes nécessite la consultation de l'onglet 'interventions' dans la foulée
-...

J'arrête là parce que tu as beaucoup codé et que c'est dur en étant novice.

On peut échanger par messages privés si tu préfères.

A+
0