Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classement des lignes

27 réponses
Avatar
romeo59181
Ce message est composé et au format MIME.

------=_NextPart_000_1359_01C8E141.9547E5A0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Bonjour,=20

Je recherche une solution pour mon fichier excel 2007 ...

C'est un fichier d'environ 3000 lignes de type annuaire,

Tous les jours mon fichier est modifier en mettant une ligne en couleur =
...

Ce que je recherche c'est une solution macro ou autre pour que ma ligne =
color=E9e aille automatiquement sous une feuille donn=E9e ...

En esp=E9rant avoir =E9t=E9 clair,

Romeo59181
------=_NextPart_000_1359_01C8E141.9547E5A0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3Diso-8859-1>
<META content=3D"MSHTML 6.00.6000.16681" name=3DGENERATOR></HEAD>
<BODY id=3DMailContainerBody=20
style=3D"PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"=20
bgColor=3D#ffffff leftMargin=3D0 topMargin=3D0 CanvasTabStop=3D"true"=20
name=3D"Compose message area">
<DIV><FONT face=3DArial size=3D2>Bonjour, </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Je recherche une solution pour mon =
fichier excel=20
2007 ...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>C'est un fichier d'environ 3000 lignes =
de type=20
annuaire,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Tous les jours mon fichier est modifier =
en mettant=20
une ligne en couleur ...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Ce que je recherche c'est une solution =
macro ou=20
autre pour que ma ligne color=E9e aille automatiquement sous une feuille =
donn=E9e=20
...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>En esp=E9rant avoir =E9t=E9 =
clair,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Romeo59181</FONT></DIV></BODY></HTML>

------=_NextPart_000_1359_01C8E141.9547E5A0--

10 réponses

1 2 3
Avatar
Péhemme
1°) Adapte la macro de FFO.
En effet, pour des raisons de présentation j'imagine, ta première colonne
est vide.
.Faute d'information, FFO determine la hauteur de ta base de données sur
cette colonne A.
.Modifie également le champ de destination (colonne B au lieu de A)
.Le début de ta base de données est B4 et non A1
2°) Il te faudra utiliser sa macro à chaque fois qu'une ligne sera remplie.
Si tu as plusieurs lignes de la même couleur, elle ne traitera que la
première.

Michel


"romeo59181" a écrit dans le message de
news:uTZ0%
Bonjour,

Démarche effectuée mais toujours le même résultat ...

D'autre pistes ?

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

Re Bonjour,

Le fichier de FFO te permet de recopier chaque ligne colorée dans un
onglet différent (chaque couleur correspondant à une affectation).
La macro nécessite deux légères modifications :
1°) comme je te le disais dans mon précédent message (ainsi que FFO dans
son message d'envoi du fichier) : mettre une ' devant chaque Exit For.
En effet, ainsi écrite la macro se terminera dès qu'elle aura trouvé et
recopié la première ligne colorée.
2°) tu devras adapter cette macro sur la ligne correspondant aux lignes
concernant "Losc" et "Braderie" traitant de la même couleur 42.

Mais je ne comprends peut-être pas la question

Michel




"romeo59181" a écrit dans le message de
news:
Bonjour,

Le tri ne effectue pas ...

Lorsque j'execute la macro la fenetre s'en va mais le tri ne se fait pas
...

Que faire,

Veut tu mon fichier ? Mon tél ?

@+

Romeo59181

"FFO" a écrit dans le message de groupe
de discussion :
Rebonjour à toi

Pour créer une Macro dans ton fichier:

Outil/Macro/Nouvelle macro
Nom de la macro : mettre un nom
Ok
Cliques sur le carré bleu de l'icone "Arr"
Puis
Outil/Macro/Macros
Sélectionnes le nom de ta macro
Modifier

Entre le Sub et le End Sub mets ces lignes :

For Each c In Worksheets("Feuil1").Range("A1", "A" &
Worksheets("Feuil1").Range("A65535").End(xlUp).Row)
If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 6 Then
c.EntireRow.Copy Sheets("Manque de
données").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 5 Then
c.EntireRow.Copy Sheets("Portable").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 46 Then
c.EntireRow.Copy Sheets("A Rap").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 15 Then
c.EntireRow.Copy Sheets("A Rap Avec
Date").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 42 Then
c.EntireRow.Copy Sheets("Losc").Range("A65535").End(xlUp).Offset(1, 0)
c.EntireRow.Copy Sheets("Braderie").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 7 Then
c.EntireRow.Copy Sheets("Braderie").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
Next

Chaque couleur est traitée par ces lignes :

If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If

If c.Interior.ColorIndex = 3 reprèsente le code de la couleur traitée
(ici
le 3 pour le rouge)

Sheets("Négatif") est le nom de l'onglet de destination

Si tu souhaites rajouter des couleurs tu prends un exemple de ces
lignes que
tu recopies avant le Next de la fin
Puis tu adaptes le code couleur et le nom de l'onglet de destination

Pour connaître le code couleur tu colories une cellule de cette couleur
et
aprés l'avoir sélectionné tu exécutes la macro suivante (aprés l'avoir
créée):

MsgBox (ActiveCell.Interior.ColorIndex)


Une boîte de dialogue te donneras le code couleur de cette cellule

Tu peux aussi modifier les lignes existantes dans ce code en fonction
d'une
nouvelle couleur ou d'un nouveau nom d'onglet

Je suppose qu'une seule couleur sera à traiter par fichier
Dans le cas contraire si plusieurs couleurs par fichier devaient être
recopiées dans les onglets appropriés il faudrait ihniber les ligne
"Exit
For" en mettant une cote devant ainsi :

'Exit For

Ou les supprimer

Je te joint un exemple sur ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200807/cij3ViDvH2.xls.

Fais des essais et dis moi !!!!










Avatar
Péhemme
Oublie mon 2°) ma remarque est erronnée.
Michel

"Péhemme" a écrit dans le message de
news:
1°) Adapte la macro de FFO.
En effet, pour des raisons de présentation j'imagine, ta première colonne
est vide.
.Faute d'information, FFO determine la hauteur de ta base de données sur
cette colonne A.
.Modifie également le champ de destination (colonne B au lieu de A)
.Le début de ta base de données est B4 et non A1
2°) Il te faudra utiliser sa macro à chaque fois qu'une ligne sera
remplie.
Si tu as plusieurs lignes de la même couleur, elle ne traitera que la
première.

Michel


"romeo59181" a écrit dans le message de
news:uTZ0%
Bonjour,

Démarche effectuée mais toujours le même résultat ...

D'autre pistes ?

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

Re Bonjour,

Le fichier de FFO te permet de recopier chaque ligne colorée dans un
onglet différent (chaque couleur correspondant à une affectation).
La macro nécessite deux légères modifications :
1°) comme je te le disais dans mon précédent message (ainsi que FFO dans
son message d'envoi du fichier) : mettre une ' devant chaque Exit For.
En effet, ainsi écrite la macro se terminera dès qu'elle aura trouvé et
recopié la première ligne colorée.
2°) tu devras adapter cette macro sur la ligne correspondant aux lignes
concernant "Losc" et "Braderie" traitant de la même couleur 42.

Mais je ne comprends peut-être pas la question

Michel




"romeo59181" a écrit dans le message de
news:
Bonjour,

Le tri ne effectue pas ...

Lorsque j'execute la macro la fenetre s'en va mais le tri ne se fait
pas ...

Que faire,

Veut tu mon fichier ? Mon tél ?

@+

Romeo59181

"FFO" a écrit dans le message de groupe
de discussion :
Rebonjour à toi

Pour créer une Macro dans ton fichier:

Outil/Macro/Nouvelle macro
Nom de la macro : mettre un nom
Ok
Cliques sur le carré bleu de l'icone "Arr"
Puis
Outil/Macro/Macros
Sélectionnes le nom de ta macro
Modifier

Entre le Sub et le End Sub mets ces lignes :

For Each c In Worksheets("Feuil1").Range("A1", "A" &
Worksheets("Feuil1").Range("A65535").End(xlUp).Row)
If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 6 Then
c.EntireRow.Copy Sheets("Manque de
données").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 5 Then
c.EntireRow.Copy
Sheets("Portable").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 46 Then
c.EntireRow.Copy Sheets("A Rap").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 15 Then
c.EntireRow.Copy Sheets("A Rap Avec
Date").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 42 Then
c.EntireRow.Copy Sheets("Losc").Range("A65535").End(xlUp).Offset(1, 0)
c.EntireRow.Copy
Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 7 Then
c.EntireRow.Copy
Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
Next

Chaque couleur est traitée par ces lignes :

If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If

If c.Interior.ColorIndex = 3 reprèsente le code de la couleur traitée
(ici
le 3 pour le rouge)

Sheets("Négatif") est le nom de l'onglet de destination

Si tu souhaites rajouter des couleurs tu prends un exemple de ces
lignes que
tu recopies avant le Next de la fin
Puis tu adaptes le code couleur et le nom de l'onglet de destination

Pour connaître le code couleur tu colories une cellule de cette
couleur et
aprés l'avoir sélectionné tu exécutes la macro suivante (aprés l'avoir
créée):

MsgBox (ActiveCell.Interior.ColorIndex)


Une boîte de dialogue te donneras le code couleur de cette cellule

Tu peux aussi modifier les lignes existantes dans ce code en fonction
d'une
nouvelle couleur ou d'un nouveau nom d'onglet

Je suppose qu'une seule couleur sera à traiter par fichier
Dans le cas contraire si plusieurs couleurs par fichier devaient être
recopiées dans les onglets appropriés il faudrait ihniber les ligne
"Exit
For" en mettant une cote devant ainsi :

'Exit For

Ou les supprimer

Je te joint un exemple sur ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200807/cij3ViDvH2.xls.

Fais des essais et dis moi !!!!













Avatar
romeo59181
Bonjour,

J'ai effectué les modifications préconisées mais cela ne fonctionne toujours
pas,

Voici ce que donne le fichier :

Sub Secouristes()
'
' Secouristes Macro
' Rangement des lignes dans les bons onglets
'
For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("A65535").End(xlUp).Row)
If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 6 Then
c.EntireRow.Copy Sheets("Manque de
données").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 5 Then
c.EntireRow.Copy Sheets("Portable").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 46 Then
c.EntireRow.Copy Sheets("A Rap").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 15 Then
c.EntireRow.Copy Sheets("A Rap Avec
Date").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 42 Then
c.EntireRow.Copy Sheets("Losc").Range("A65535").End(xlUp).Offset(1, 0)
c.EntireRow.Copy Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 7 Then
c.EntireRow.Copy Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
Next
'
End Sub

@+

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

1°) Adapte la macro de FFO.
En effet, pour des raisons de présentation j'imagine, ta première colonne
est vide.
.Faute d'information, FFO determine la hauteur de ta base de données sur
cette colonne A.
.Modifie également le champ de destination (colonne B au lieu de A)
.Le début de ta base de données est B4 et non A1
2°) Il te faudra utiliser sa macro à chaque fois qu'une ligne sera
remplie.
Si tu as plusieurs lignes de la même couleur, elle ne traitera que la
première.

Michel


"romeo59181" a écrit dans le message de
news:uTZ0%
Bonjour,

Démarche effectuée mais toujours le même résultat ...

D'autre pistes ?

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

Re Bonjour,

Le fichier de FFO te permet de recopier chaque ligne colorée dans un
onglet différent (chaque couleur correspondant à une affectation).
La macro nécessite deux légères modifications :
1°) comme je te le disais dans mon précédent message (ainsi que FFO dans
son message d'envoi du fichier) : mettre une ' devant chaque Exit For.
En effet, ainsi écrite la macro se terminera dès qu'elle aura trouvé et
recopié la première ligne colorée.
2°) tu devras adapter cette macro sur la ligne correspondant aux lignes
concernant "Losc" et "Braderie" traitant de la même couleur 42.

Mais je ne comprends peut-être pas la question

Michel




"romeo59181" a écrit dans le message de
news:
Bonjour,

Le tri ne effectue pas ...

Lorsque j'execute la macro la fenetre s'en va mais le tri ne se fait
pas ...

Que faire,

Veut tu mon fichier ? Mon tél ?

@+

Romeo59181

"FFO" a écrit dans le message de groupe
de discussion :
Rebonjour à toi

Pour créer une Macro dans ton fichier:

Outil/Macro/Nouvelle macro
Nom de la macro : mettre un nom
Ok
Cliques sur le carré bleu de l'icone "Arr"
Puis
Outil/Macro/Macros
Sélectionnes le nom de ta macro
Modifier

Entre le Sub et le End Sub mets ces lignes :

For Each c In Worksheets("Feuil1").Range("A1", "A" &
Worksheets("Feuil1").Range("A65535").End(xlUp).Row)
If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 6 Then
c.EntireRow.Copy Sheets("Manque de
données").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 5 Then
c.EntireRow.Copy
Sheets("Portable").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 46 Then
c.EntireRow.Copy Sheets("A Rap").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 15 Then
c.EntireRow.Copy Sheets("A Rap Avec
Date").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 42 Then
c.EntireRow.Copy Sheets("Losc").Range("A65535").End(xlUp).Offset(1, 0)
c.EntireRow.Copy
Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 7 Then
c.EntireRow.Copy
Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
Next

Chaque couleur est traitée par ces lignes :

If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If

If c.Interior.ColorIndex = 3 reprèsente le code de la couleur traitée
(ici
le 3 pour le rouge)

Sheets("Négatif") est le nom de l'onglet de destination

Si tu souhaites rajouter des couleurs tu prends un exemple de ces
lignes que
tu recopies avant le Next de la fin
Puis tu adaptes le code couleur et le nom de l'onglet de destination

Pour connaître le code couleur tu colories une cellule de cette
couleur et
aprés l'avoir sélectionné tu exécutes la macro suivante (aprés l'avoir
créée):

MsgBox (ActiveCell.Interior.ColorIndex)


Une boîte de dialogue te donneras le code couleur de cette cellule

Tu peux aussi modifier les lignes existantes dans ce code en fonction
d'une
nouvelle couleur ou d'un nouveau nom d'onglet

Je suppose qu'une seule couleur sera à traiter par fichier
Dans le cas contraire si plusieurs couleurs par fichier devaient être
recopiées dans les onglets appropriés il faudrait ihniber les ligne
"Exit
For" en mettant une cote devant ainsi :

'Exit For

Ou les supprimer

Je te joint un exemple sur ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200807/cij3ViDvH2.xls.

Fais des essais et dis moi !!!!













Avatar
Péhemme
Tes modifications sont incomplètes.
Entre autre, au lieu de :
For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("A65535").End(xlUp).Row)


écrire :
For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("B65535").End(xlUp).Row)



Cela dit, toute la ligne étant copiée, soit tu modifies ta présentation en
supprimant ta colonne A, soit dans ta macro tu ne recopies que la partie de
la ligne concernée (dans ton exemple Bx:ABx) que tu dois préciser dans ta
macro et adaptée les destinations dans ta macro.. bref, un peu de boulot.

Par ailleurs et si je puis me permettre, il me semble que tu abordes mal ton
problème. Faire une ventilation d'informations par macro au départ de
couleurs, c'est vraiment se casser la tête pour rien.
Une colonne avec une information supplémentaire, un tri automatique et un
bon copier/coller dans une autre page aurait AMHA été plus efficace (mais ta
présentation ne s'y prête pas).

Bon courage.

Michel



"romeo59181" a écrit dans le message de
news:
Bonjour,

J'ai effectué les modifications préconisées mais cela ne fonctionne
toujours pas,

Voici ce que donne le fichier :

Sub Secouristes()
'
' Secouristes Macro
' Rangement des lignes dans les bons onglets
'
For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("A65535").End(xlUp).Row)
If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 6 Then
c.EntireRow.Copy Sheets("Manque de
données").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 5 Then
c.EntireRow.Copy Sheets("Portable").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 46 Then
c.EntireRow.Copy Sheets("A Rap").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 15 Then
c.EntireRow.Copy Sheets("A Rap Avec
Date").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 42 Then
c.EntireRow.Copy Sheets("Losc").Range("A65535").End(xlUp).Offset(1, 0)
c.EntireRow.Copy Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 7 Then
c.EntireRow.Copy Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
Next
'
End Sub

@+

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

1°) Adapte la macro de FFO.
En effet, pour des raisons de présentation j'imagine, ta première colonne
est vide.
.Faute d'information, FFO determine la hauteur de ta base de données sur
cette colonne A.
.Modifie également le champ de destination (colonne B au lieu de A)
.Le début de ta base de données est B4 et non A1
2°) Il te faudra utiliser sa macro à chaque fois qu'une ligne sera
remplie.
Si tu as plusieurs lignes de la même couleur, elle ne traitera que la
première.

Michel


"romeo59181" a écrit dans le message de
news:uTZ0%
Bonjour,

Démarche effectuée mais toujours le même résultat ...

D'autre pistes ?

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

Re Bonjour,

Le fichier de FFO te permet de recopier chaque ligne colorée dans un
onglet différent (chaque couleur correspondant à une affectation).
La macro nécessite deux légères modifications :
1°) comme je te le disais dans mon précédent message (ainsi que FFO
dans son message d'envoi du fichier) : mettre une ' devant chaque Exit
For.
En effet, ainsi écrite la macro se terminera dès qu'elle aura trouvé et
recopié la première ligne colorée.
2°) tu devras adapter cette macro sur la ligne correspondant aux lignes
concernant "Losc" et "Braderie" traitant de la même couleur 42.

Mais je ne comprends peut-être pas la question

Michel




"romeo59181" a écrit dans le message de
news:
Bonjour,

Le tri ne effectue pas ...

Lorsque j'execute la macro la fenetre s'en va mais le tri ne se fait
pas ...

Que faire,

Veut tu mon fichier ? Mon tél ?

@+

Romeo59181

"FFO" a écrit dans le message de
groupe de discussion :

Rebonjour à toi

Pour créer une Macro dans ton fichier:

Outil/Macro/Nouvelle macro
Nom de la macro : mettre un nom
Ok
Cliques sur le carré bleu de l'icone "Arr"
Puis
Outil/Macro/Macros
Sélectionnes le nom de ta macro
Modifier

Entre le Sub et le End Sub mets ces lignes :

For Each c In Worksheets("Feuil1").Range("A1", "A" &
Worksheets("Feuil1").Range("A65535").End(xlUp).Row)
If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy
Sheets("Négatif").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 6 Then
c.EntireRow.Copy Sheets("Manque de
données").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 5 Then
c.EntireRow.Copy
Sheets("Portable").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 46 Then
c.EntireRow.Copy Sheets("A Rap").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 15 Then
c.EntireRow.Copy Sheets("A Rap Avec
Date").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 42 Then
c.EntireRow.Copy Sheets("Losc").Range("A65535").End(xlUp).Offset(1,
0)
c.EntireRow.Copy
Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 7 Then
c.EntireRow.Copy
Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
Next

Chaque couleur est traitée par ces lignes :

If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy
Sheets("Négatif").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If

If c.Interior.ColorIndex = 3 reprèsente le code de la couleur traitée
(ici
le 3 pour le rouge)

Sheets("Négatif") est le nom de l'onglet de destination

Si tu souhaites rajouter des couleurs tu prends un exemple de ces
lignes que
tu recopies avant le Next de la fin
Puis tu adaptes le code couleur et le nom de l'onglet de destination

Pour connaître le code couleur tu colories une cellule de cette
couleur et
aprés l'avoir sélectionné tu exécutes la macro suivante (aprés
l'avoir créée):

MsgBox (ActiveCell.Interior.ColorIndex)


Une boîte de dialogue te donneras le code couleur de cette cellule

Tu peux aussi modifier les lignes existantes dans ce code en fonction
d'une
nouvelle couleur ou d'un nouveau nom d'onglet

Je suppose qu'une seule couleur sera à traiter par fichier
Dans le cas contraire si plusieurs couleurs par fichier devaient être
recopiées dans les onglets appropriés il faudrait ihniber les ligne
"Exit
For" en mettant une cote devant ainsi :

'Exit For

Ou les supprimer

Je te joint un exemple sur ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200807/cij3ViDvH2.xls.

Fais des essais et dis moi !!!!















Avatar
Fredo P
À essayer , il se peut qu'il y ai une adaptation des codes des couleurs à
réaliser dans la routine, sur la ligne suivante:
aa = Switch(Cc = 3, "Négatif", Cc = 6, "Manque de données", Cc = 23,
"Portable", Cc = 44, "A Rap", Cc = 48, "A Rap Avec Date" _
, Cc = 4, "Losc", Cc = 7, "Braderie")
Une boucle mise en REM permet de connaitre ces codes.
http://cjoint.com/?hkaAuxze0n
"romeo59181" a écrit dans le message de news:

Bonjour,

Je recherche une solution pour mon fichier excel 2007 ...

C'est un fichier d'environ 3000 lignes de type annuaire,

Tous les jours mon fichier est modifier en mettant une ligne en couleur ...

Ce que je recherche c'est une solution macro ou autre pour que ma ligne
colorée aille automatiquement sous une feuille donnée ...

En espérant avoir été clair,

Romeo59181
Avatar
romeo59181
Bonsoir,

J'ai suivi ton conseil de virer les colonnes superflues,

Le tri commence à fonctionner ...

Il reste plus que 1 petit problème :

==>> Une fois les lignes triées je souhaite qu'elle ne reste pas dans
l'onglet général

En gros dès que la ligne est copié sous le bon onglet il ne faut pas qu'elle
reste présente sous le général

Dans l'attente de vous lire,

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

Tes modifications sont incomplètes.
Entre autre, au lieu de :
For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("A65535").End(xlUp).Row)


écrire :
For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("B65535").End(xlUp).Row)



Cela dit, toute la ligne étant copiée, soit tu modifies ta présentation en
supprimant ta colonne A, soit dans ta macro tu ne recopies que la partie
de la ligne concernée (dans ton exemple Bx:ABx) que tu dois préciser dans
ta macro et adaptée les destinations dans ta macro.. bref, un peu de
boulot.

Par ailleurs et si je puis me permettre, il me semble que tu abordes mal
ton problème. Faire une ventilation d'informations par macro au départ de
couleurs, c'est vraiment se casser la tête pour rien.
Une colonne avec une information supplémentaire, un tri automatique et un
bon copier/coller dans une autre page aurait AMHA été plus efficace (mais
ta présentation ne s'y prête pas).

Bon courage.

Michel



"romeo59181" a écrit dans le message de
news:
Bonjour,

J'ai effectué les modifications préconisées mais cela ne fonctionne
toujours pas,

Voici ce que donne le fichier :

Sub Secouristes()
'
' Secouristes Macro
' Rangement des lignes dans les bons onglets
'
For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("A65535").End(xlUp).Row)
If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy Sheets("Négatif").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 6 Then
c.EntireRow.Copy Sheets("Manque de
données").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 5 Then
c.EntireRow.Copy Sheets("Portable").Range("A65535").End(xlUp).Offset(1,
0)
'Exit For
End If
If c.Interior.ColorIndex = 46 Then
c.EntireRow.Copy Sheets("A Rap").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 15 Then
c.EntireRow.Copy Sheets("A Rap Avec
Date").Range("A65535").End(xlUp).Offset(1, 0)
'Exit For
End If
If c.Interior.ColorIndex = 42 Then
c.EntireRow.Copy Sheets("Losc").Range("A65535").End(xlUp).Offset(1, 0)
c.EntireRow.Copy Sheets("Braderie").Range("A65535").End(xlUp).Offset(1,
0)
'Exit For
End If
If c.Interior.ColorIndex = 7 Then
c.EntireRow.Copy Sheets("Braderie").Range("A65535").End(xlUp).Offset(1,
0)
'Exit For
End If
Next
'
End Sub

@+

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

1°) Adapte la macro de FFO.
En effet, pour des raisons de présentation j'imagine, ta première
colonne est vide.
.Faute d'information, FFO determine la hauteur de ta base de données sur
cette colonne A.
.Modifie également le champ de destination (colonne B au lieu de A)
.Le début de ta base de données est B4 et non A1
2°) Il te faudra utiliser sa macro à chaque fois qu'une ligne sera
remplie.
Si tu as plusieurs lignes de la même couleur, elle ne traitera que la
première.

Michel


"romeo59181" a écrit dans le message de
news:uTZ0%
Bonjour,

Démarche effectuée mais toujours le même résultat ...

D'autre pistes ?

Romeo59181

"Péhemme" a écrit dans le message de groupe de discussion :

Re Bonjour,

Le fichier de FFO te permet de recopier chaque ligne colorée dans un
onglet différent (chaque couleur correspondant à une affectation).
La macro nécessite deux légères modifications :
1°) comme je te le disais dans mon précédent message (ainsi que FFO
dans son message d'envoi du fichier) : mettre une ' devant chaque Exit
For.
En effet, ainsi écrite la macro se terminera dès qu'elle aura trouvé
et recopié la première ligne colorée.
2°) tu devras adapter cette macro sur la ligne correspondant aux
lignes concernant "Losc" et "Braderie" traitant de la même couleur 42.

Mais je ne comprends peut-être pas la question

Michel




"romeo59181" a écrit dans le message de
news:
Bonjour,

Le tri ne effectue pas ...

Lorsque j'execute la macro la fenetre s'en va mais le tri ne se fait
pas ...

Que faire,

Veut tu mon fichier ? Mon tél ?

@+

Romeo59181

"FFO" a écrit dans le message de
groupe de discussion :

Rebonjour à toi

Pour créer une Macro dans ton fichier:

Outil/Macro/Nouvelle macro
Nom de la macro : mettre un nom
Ok
Cliques sur le carré bleu de l'icone "Arr"
Puis
Outil/Macro/Macros
Sélectionnes le nom de ta macro
Modifier

Entre le Sub et le End Sub mets ces lignes :

For Each c In Worksheets("Feuil1").Range("A1", "A" &
Worksheets("Feuil1").Range("A65535").End(xlUp).Row)
If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy
Sheets("Négatif").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 6 Then
c.EntireRow.Copy Sheets("Manque de
données").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 5 Then
c.EntireRow.Copy
Sheets("Portable").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 46 Then
c.EntireRow.Copy Sheets("A Rap").Range("A65535").End(xlUp).Offset(1,
0)
Exit For
End If
If c.Interior.ColorIndex = 15 Then
c.EntireRow.Copy Sheets("A Rap Avec
Date").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 42 Then
c.EntireRow.Copy Sheets("Losc").Range("A65535").End(xlUp).Offset(1,
0)
c.EntireRow.Copy
Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
If c.Interior.ColorIndex = 7 Then
c.EntireRow.Copy
Sheets("Braderie").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If
Next

Chaque couleur est traitée par ces lignes :

If c.Interior.ColorIndex = 3 Then
c.EntireRow.Copy
Sheets("Négatif").Range("A65535").End(xlUp).Offset(1, 0)
Exit For
End If

If c.Interior.ColorIndex = 3 reprèsente le code de la couleur
traitée (ici
le 3 pour le rouge)

Sheets("Négatif") est le nom de l'onglet de destination

Si tu souhaites rajouter des couleurs tu prends un exemple de ces
lignes que
tu recopies avant le Next de la fin
Puis tu adaptes le code couleur et le nom de l'onglet de destination

Pour connaître le code couleur tu colories une cellule de cette
couleur et
aprés l'avoir sélectionné tu exécutes la macro suivante (aprés
l'avoir créée):

MsgBox (ActiveCell.Interior.ColorIndex)


Une boîte de dialogue te donneras le code couleur de cette cellule

Tu peux aussi modifier les lignes existantes dans ce code en
fonction d'une
nouvelle couleur ou d'un nouveau nom d'onglet

Je suppose qu'une seule couleur sera à traiter par fichier
Dans le cas contraire si plusieurs couleurs par fichier devaient
être
recopiées dans les onglets appropriés il faudrait ihniber les ligne
"Exit
For" en mettant une cote devant ainsi :

'Exit For

Ou les supprimer

Je te joint un exemple sur ce lien :

http://www.cijoint.fr/cjlink.php?file=cj200807/cij3ViDvH2.xls.

Fais des essais et dis moi !!!!


















Avatar
romeo59181
Bonjour,

Je te remercie pour ton fichier qui m'as aider à adapter mes codes couleur
...

En ce qui concerne la formule celle que je possède fonctionne je préfère
continuer avec la 1ère ...

Merci

Romeo59181

"Fredo P" a écrit dans le
message de groupe de discussion :

À essayer , il se peut qu'il y ai une adaptation des codes des couleurs à
réaliser dans la routine, sur la ligne suivante:
aa = Switch(Cc = 3, "Négatif", Cc = 6, "Manque de données", Cc = 23,
"Portable", Cc = 44, "A Rap", Cc = 48, "A Rap Avec Date" _
, Cc = 4, "Losc", Cc = 7, "Braderie")
Une boucle mise en REM permet de connaitre ces codes.
http://cjoint.com/?hkaAuxze0n
"romeo59181" a écrit dans le message de news:

Bonjour,

Je recherche une solution pour mon fichier excel 2007 ...

C'est un fichier d'environ 3000 lignes de type annuaire,

Tous les jours mon fichier est modifier en mettant une ligne en couleur
...

Ce que je recherche c'est une solution macro ou autre pour que ma ligne
colorée aille automatiquement sous une feuille donnée ...

En espérant avoir été clair,

Romeo59181



Avatar
FFO
Rebonjour à toi
Je reprends le fil de la discussion
Heureux que tu y soit arrivé avec les précieux conseils de Péhemme
Une petite amélioration qui t'évitera le problème lié au remplissage des
colonnes

Change la ligne :

For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("B65535").End(xlUp).Row)

Par :

For Each c In Worksheets("Général").Range("B4", "B" &
Worksheets("Général").Range("B1").SpecialCells(xlLastCell).Row)

Quelque soit la colonne qui porte le plus de données la macro prendra
l'intégralité des lignes à traiter

Pour supprimer les lignes dans l'Onglet "Général" tu peux rajouter la ligne :

c.EntireRow.Clear juste avant chaque "End If" ou avant le Exit For si tu ne
l'as pas supprimé en mettant une cote

Celà aura pour effet de vider la ligne colorée dans l'onglet "Général" mais
pas de la supprimer

Est ce suffisant

Dis moi !!!!
Avatar
romeo59181
Bonjour,

On avance de plus en plus ...

Même avec ta modification j'ai toujours un petit soucis avec mes colonnes de
rab car en exécutant la macro uniquement la dernière ligne correspondante à
mes critères se trie ...

En ce qui concerne le vidage de la ligne si on ne peut pas faire mieux je
m'en contenterais ... ( je la supprimerai manuellement )

@+

Romeo59181

"FFO" a écrit dans le message de groupe de
discussion :
Rebonjour à toi
Je reprends le fil de la discussion
Heureux que tu y soit arrivé avec les précieux conseils de Péhemme
Une petite amélioration qui t'évitera le problème lié au remplissage des
colonnes

Change la ligne :

For Each c In Worksheets("Général").Range("b4", "B" &
Worksheets("Général").Range("B65535").End(xlUp).Row)

Par :

For Each c In Worksheets("Général").Range("B4", "B" &
Worksheets("Général").Range("B1").SpecialCells(xlLastCell).Row)

Quelque soit la colonne qui porte le plus de données la macro prendra
l'intégralité des lignes à traiter

Pour supprimer les lignes dans l'Onglet "Général" tu peux rajouter la
ligne :

c.EntireRow.Clear juste avant chaque "End If" ou avant le Exit For si tu
ne
l'as pas supprimé en mettant une cote

Celà aura pour effet de vider la ligne colorée dans l'onglet "Général"
mais
pas de la supprimer

Est ce suffisant

Dis moi !!!!



Avatar
FFO
Rebonjour à toi

Remplaces partout :

c.EntireRow.Clear

par

Lignes = Lignes & "A" & c.Row & ","

En fin de code aprés le "Next" mets cette ligne :

Range(Mid(Lignes, 1, Len(Lignes) - 1)).EntireRow.Delete

Fais un essai et dis moi

Pour ce qui concerne ma dernière correction :

Même avec ta modification j'ai toujours un petit soucis avec mes colonnes de
rab car en exécutant la macro uniquement la dernière ligne correspondante à
mes critères se trie ...



Peux tu me transmettre ton fichier tel qui l'est afin que je comprenne

http://www.cijoint.fr/index.php


Merci
1 2 3