OVH Cloud OVH Cloud

Macro je pense dure à réaliser

6 réponses
Avatar
squeepy
Bonjour,
Dans un fichier excel, j'ai mis en place des projets avec différentes dates
dans une 1ere colonne, j'ai une date (quand a été commencé le projet), et
dans une deuxième colonne, une autre date avec la fin du projet.
Si la date de fin projet est supérieure à la date d'aujourd'hui, alors la
couleur de remplissage passe a bleu. (ca c'est bon)
Là ou j'ai besoin de vous :
J'aimerais faire un bouton, que quand on clique dessus, ça imprime toutes
les lignes avec une couleur de remplissage bleue.
--
Merci de votre aide

6 réponses

Avatar
ChrisV
Bonjour squeepy,

Tu peux obtenir ça directement avec un filtre (auto ou pers.) sur la colonne
Dates...
Si problème, relance...


ChrisV


"squeepy" a écrit dans le message de
news:
Bonjour,
Dans un fichier excel, j'ai mis en place des projets avec différentes
dates
dans une 1ere colonne, j'ai une date (quand a été commencé le projet), et
dans une deuxième colonne, une autre date avec la fin du projet.
Si la date de fin projet est supérieure à la date d'aujourd'hui, alors la
couleur de remplissage passe a bleu. (ca c'est bon)
Là ou j'ai besoin de vous :
J'aimerais faire un bouton, que quand on clique dessus, ça imprime toutes
les lignes avec une couleur de remplissage bleue.
--
Merci de votre aide


Avatar
Cage à lapins
Bonjour,

C'est juste une idée :
Il faudrait masquer les lignes qui ne sont pas bleues
Donc on aurait une boucle qui traiterait toutes les lignes, testerait la
couleur de fond et masquerait la ligne si elle a un fond bleu. A l'impression
seulles les lignes non masquées sont imprimées.
Exemple en imaginant que COL contient le n° de la colonne à tester et BLEU
l'index de ta couleur de remplissage :
ligne=[N° de la 1ere ligne]
do while not(isempty(cells(ligne, COL)))
if cells(ligne,col).Interior.ColorIndex <> BLEU then
cells(ligne,col).EntireRow.Hidden = True
end if
ligne=ligne+1
loop
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


"squeepy" wrote:

Bonjour,
Dans un fichier excel, j'ai mis en place des projets avec différentes dates
dans une 1ere colonne, j'ai une date (quand a été commencé le projet), et
dans une deuxième colonne, une autre date avec la fin du projet.
Si la date de fin projet est supérieure à la date d'aujourd'hui, alors la
couleur de remplissage passe a bleu. (ca c'est bon)
Là ou j'ai besoin de vous :
J'aimerais faire un bouton, que quand on clique dessus, ça imprime toutes
les lignes avec une couleur de remplissage bleue.
--
Merci de votre aide


Avatar
squeepy
ok, je vais tester tout cela, merci

"squeepy" wrote:

Bonjour,
Dans un fichier excel, j'ai mis en place des projets avec différentes dates
dans une 1ere colonne, j'ai une date (quand a été commencé le projet), et
dans une deuxième colonne, une autre date avec la fin du projet.
Si la date de fin projet est supérieure à la date d'aujourd'hui, alors la
couleur de remplissage passe a bleu. (ca c'est bon)
Là ou j'ai besoin de vous :
J'aimerais faire un bouton, que quand on clique dessus, ça imprime toutes
les lignes avec une couleur de remplissage bleue.
--
Merci de votre aide


Avatar
squeepy
ça m'a l'air un peu galére, il n'y a rien de plus simple. ou pourrait tu
détailler comment faire svp
merci


Bonjour,

C'est juste une idée :
Il faudrait masquer les lignes qui ne sont pas bleues
Donc on aurait une boucle qui traiterait toutes les lignes, testerait la
couleur de fond et masquerait la ligne si elle a un fond bleu. A l'impression
seulles les lignes non masquées sont imprimées.
Exemple en imaginant que COL contient le n° de la colonne à tester et BLEU
l'index de ta couleur de remplissage :
ligne=[N° de la 1ere ligne]
do while not(isempty(cells(ligne, COL)))
if cells(ligne,col).Interior.ColorIndex <> BLEU then
cells(ligne,col).EntireRow.Hidden = True
end if
ligne=ligne+1
loop
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


"squeepy" wrote:

Bonjour,
Dans un fichier excel, j'ai mis en place des projets avec différentes dates
dans une 1ere colonne, j'ai une date (quand a été commencé le projet), et
dans une deuxième colonne, une autre date avec la fin du projet.
Si la date de fin projet est supérieure à la date d'aujourd'hui, alors la
couleur de remplissage passe a bleu. (ca c'est bon)
Là ou j'ai besoin de vous :
J'aimerais faire un bouton, que quand on clique dessus, ça imprime toutes
les lignes avec une couleur de remplissage bleue.
--
Merci de votre aide




Avatar
Cage à lapins
C'est effectivement "galère" mais si la couleur de fond est le seul critère
... (on peut pas positionner un filtre sur la couleur de fond à ma
connaissance)
il faut donc créer une procédure sub
Par exemple (à recopier):

Public Sub filtre_bleu()
Const BLEU = 5
Const COL = 1
Dim Ligne As Integer

Do While Not (IsEmpty(Cells(Ligne, COL)))
If Cells(Ligne, COL).Interior.ColorIndex <> BLEU Then
Cells(Ligne, COL).EntireRow.Hidden = True
End If
Ligne = Ligne + 1
Loop
ActiveSheet.PrintOut Copies:=1, Collate:=True
End Sub

La ligne "Do While Not (IsEmpty(Cells(Ligne, COL)))" va faire que la boucle
de traitement va s'arrêter dès qu'elle rencontrera une cellule vide dans la
colonne 1 (colonne "A" donc). Si tu as des lignes vides dans ton tableau ça
ne marchera pas et il faudra trouver une autre condition de test pour trouver
la fin du tableau.

Const BLEU = : la valeur 5 sera peut-être à remplacer par une autre valeur
(11, 25, 32, ...) en fonction du bleu que tu as utilisé pour colorer tes
lignes.


"squeepy" wrote:

ça m'a l'air un peu galére, il n'y a rien de plus simple. ou pourrait tu
détailler comment faire svp
merci


Bonjour,

C'est juste une idée :
Il faudrait masquer les lignes qui ne sont pas bleues
Donc on aurait une boucle qui traiterait toutes les lignes, testerait la
couleur de fond et masquerait la ligne si elle a un fond bleu. A l'impression
seulles les lignes non masquées sont imprimées.
Exemple en imaginant que COL contient le n° de la colonne à tester et BLEU
l'index de ta couleur de remplissage :
ligne=[N° de la 1ere ligne]
do while not(isempty(cells(ligne, COL)))
if cells(ligne,col).Interior.ColorIndex <> BLEU then
cells(ligne,col).EntireRow.Hidden = True
end if
ligne=ligne+1
loop
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


"squeepy" wrote:

Bonjour,
Dans un fichier excel, j'ai mis en place des projets avec différentes dates
dans une 1ere colonne, j'ai une date (quand a été commencé le projet), et
dans une deuxième colonne, une autre date avec la fin du projet.
Si la date de fin projet est supérieure à la date d'aujourd'hui, alors la
couleur de remplissage passe a bleu. (ca c'est bon)
Là ou j'ai besoin de vous :
J'aimerais faire un bouton, que quand on clique dessus, ça imprime toutes
les lignes avec une couleur de remplissage bleue.
--
Merci de votre aide






Avatar
ChrisV
Bonjour Cages à lapins (...),

... mais si la couleur de fond est le seul critère...


Il n'est pas le critère, mais la conséquence de la vérification du
critère...
(cf post initial de squeepy)
"si la date de fin projet est supérieure à la date d'aujourd'hui..."

Pour une soluce rapide, facile, sans VBA... Le filtre élaboré !
;-)


ChrisV


"Cage à lapins" a écrit dans le
message de news:
C'est effectivement "galère" mais si la couleur de fond est le seul
critère
... (on peut pas positionner un filtre sur la couleur de fond à ma
connaissance)
il faut donc créer une procédure sub
Par exemple (à recopier):

Public Sub filtre_bleu()
Const BLEU = 5
Const COL = 1
Dim Ligne As Integer

Do While Not (IsEmpty(Cells(Ligne, COL)))
If Cells(Ligne, COL).Interior.ColorIndex <> BLEU Then
Cells(Ligne, COL).EntireRow.Hidden = True
End If
Ligne = Ligne + 1
Loop
ActiveSheet.PrintOut Copies:=1, Collate:=True
End Sub

La ligne "Do While Not (IsEmpty(Cells(Ligne, COL)))" va faire que la
boucle
de traitement va s'arrêter dès qu'elle rencontrera une cellule vide dans
la
colonne 1 (colonne "A" donc). Si tu as des lignes vides dans ton tableau
ça
ne marchera pas et il faudra trouver une autre condition de test pour
trouver
la fin du tableau.

Const BLEU = : la valeur 5 sera peut-être à remplacer par une autre valeur
(11, 25, 32, ...) en fonction du bleu que tu as utilisé pour colorer tes
lignes.


"squeepy" wrote:

ça m'a l'air un peu galére, il n'y a rien de plus simple. ou pourrait tu
détailler comment faire svp
merci


Bonjour,

C'est juste une idée :
Il faudrait masquer les lignes qui ne sont pas bleues
Donc on aurait une boucle qui traiterait toutes les lignes, testerait
la
couleur de fond et masquerait la ligne si elle a un fond bleu. A
l'impression
seulles les lignes non masquées sont imprimées.
Exemple en imaginant que COL contient le n° de la colonne à tester et
BLEU
l'index de ta couleur de remplissage :
ligne=[N° de la 1ere ligne]
do while not(isempty(cells(ligne, COL)))
if cells(ligne,col).Interior.ColorIndex <> BLEU then
cells(ligne,col).EntireRow.Hidden = True
end if
ligne=ligne+1
loop
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


"squeepy" wrote:

Bonjour,
Dans un fichier excel, j'ai mis en place des projets avec différentes
dates
dans une 1ere colonne, j'ai une date (quand a été commencé le
projet), et
dans une deuxième colonne, une autre date avec la fin du projet.
Si la date de fin projet est supérieure à la date d'aujourd'hui,
alors la
couleur de remplissage passe a bleu. (ca c'est bon)
Là ou j'ai besoin de vous :
J'aimerais faire un bouton, que quand on clique dessus, ça imprime
toutes
les lignes avec une couleur de remplissage bleue.
--
Merci de votre aide