Mise en forme : encadrer automatiquement des lignes

gozi

XLDnaute Nouveau
Bonjour,

je récapitule dans un document excel le planning journalier de visites touristiques :
un thème de sortie, une heure de rendez-vous, un guide, une liste de participants.

Certains groupes de petite taille ayant le même but de visite, nous pouvons les réunir dans la même sortie :
un thème de sortie, une heure de rendez-vous, un guide, deux listes de participants.

Le tableau est trié selon les heures de rendez-vous (colonne B).

Ensuite, je trace manuellement des traits pour distinguer les sorties.

Lorsque deux groupes différents réalisent la même sortie, je trace les traits de manière à ce qu'ils encadrent l'ensemble des lignes correspondantes.

Plutôt que me fatiguer à tracer tous ces encadrements un par un (avec le risque d'erreur induit), existe-t-il la possibilité de faire en sorte que :
- si une heure de rendez-vous est unique, alors encadrer toute la ligne correspondante,
- si une heure de rendez-vous et le prénom du guide sont identiques sur deux lignes, alors encadrer ces deux lignes en même temps.

Merci encore pour votre aide, qui me fait chaque fois gagner un peu plus de temps dans mon travail quotidien.

(L'exemple fourni en pièce jointe vient d'être réalisé à la maison sous Excel 2007, mais je travaille au boulot sous Excel 2003.)

gozi
 

Pièces jointes

  • Exemple pour le forum (encadrement des lignes).xlsx
    11.4 KB · Affichages: 66

JCGL

XLDnaute Barbatruc
Re : Mise en forme : encadrer automatiquement des lignes

Bonjour à tous,

Peux-tu essayer :

Capture_2.png

A + à tous
 

Pièces jointes

  • Capture_1.png
    Capture_1.png
    9.9 KB · Affichages: 49
  • Capture_1.png
    Capture_1.png
    9.9 KB · Affichages: 64
  • Capture_1.png
    Capture_1.png
    9.9 KB · Affichages: 55
  • Capture_2.png
    Capture_2.png
    5 KB · Affichages: 78
  • Capture_2.png
    Capture_2.png
    5 KB · Affichages: 86
Dernière édition:

klin89

XLDnaute Accro
Re : Mise en forme : encadrer automatiquement des lignes

Bonjour le forum, :)
Salut DoubleZero, JCGL :)

Histoire de remettre le pied à l'étrier, n'est-ce pas DoubleZero :D
Avec l'objet Dictionary et donc recherche de doublons sur B & C :
VB:
Sub Mise_En_forme()
Dim Doublons As Object, Cell As Range, temp As String
'Dim Doublons As Dictionary
'Set Doublons = New Dictionary
Set Doublons = CreateObject("Scripting.Dictionary") 'on déclare l'objet Doublons
On Error Resume Next
  With Feuil2.Range("A1:D" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row)
    .BorderAround xlContinuous, xlThin
  End With
  For Each Cell In Feuil2.Range("B2:B" & Feuil2.Range("B" & Rows.Count).End(xlUp).Row)
    temp = Cell.Value & Cell.Offset(, 1).Value
    If Not Doublons.exists(temp) Then 'si la valeur n'existe pas, on l'insère dans l'objet
      Doublons.Add temp, temp
      Cell.Offset(, -1).Resize(, 4).Borders(xlEdgeTop).LineStyle = xlContinuous
    Else
      With Cell.Offset(, -1).Resize(, 4)
        .Borders(xlEdgeTop).LineStyle = xlNone
      End With
    End If
  Next
Set Doublons = Nothing
On Error GoTo 0
End Sub

Klin89
 
Dernière édition:

gozi

XLDnaute Nouveau
Re : Mise en forme : encadrer automatiquement des lignes

Bonjour Klin89,

j'ai beau essayer de copier ta macro dans mon document, il ne se passe jamais rien : pas même un message d'erreur ne s'affiche.

Je me doute bien qu'il s'agit d'une balourdise de ma part, c'est pourquoi je joins en copie mon doc contenant ta macro... pour que tu puisses y jeter un oeil si le coeur t'en dit.
(Il s'agit d'un nouveau doc que je viens d'enregistrer le plus discrètement possible depuis mon boulot).

Merci pour ton concours,
gozi
 

Pièces jointes

  • klin89.xls
    27.5 KB · Affichages: 27
  • klin89.xls
    27.5 KB · Affichages: 31
  • klin89.xls
    27.5 KB · Affichages: 31

klin89

XLDnaute Accro
Re : Mise en forme : encadrer automatiquement des lignes

Salut gozi, DoubleZero :)

J'ai travaillé sur le CodeName de la feuille concernée or il se trouve que la feuille de calcul concernée s'appelle Feuil2 mais le CodeName c'est Feuil1 :rolleyes:
Donc remplace Feuil2 par Feuil1 :eek:
Pour bien comprendre la démarche : après le Else place ceci en rempacement du bloc With ...end With
Tu visualiseras bien les doublons en vert.

VB:
With Cell.Offset(, -1).Resize(, 4)
        .Borders(xlEdgeTop).LineStyle = xlNone
        .Interior.ColorIndex = 43
      End With
Edit : vois le complément d'explications de DoubleZero, tu vas comprendre.

Klin89
 
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Re : Mise en forme : encadrer automatiquement des lignes

Re-bonjour,

En l'absence de klin89, voici ton fichier avec le code qu'il a rédigé (j'ai changé l'intitulé de l'onglet).

Bon courage et à bientôt :)

P. S. :

En l'absence de klin89

J'ai les mirettes dans les chaussettes ;) !
 

Pièces jointes

  • 00 - gozi -Code de klin89.xls
    83.5 KB · Affichages: 61
Dernière édition:

gozi

XLDnaute Nouveau
Re : Mise en forme : encadrer automatiquement des lignes

Merci les gars, vous êtes très serviables.

Klin89 : j'ai récupéré le fichier mis à jour par DoubleZero, puis j'ai suivi tes consignes et copié le bloc au bon endroit... Et les doublons apparaissent bien en surbrillance verte.
Je vois bien que c'est dû à l'ajout de l'instruction "Interior.ColorIndex = 43"

Je vais m'amuser un peu à couper par ci ou par là un petit bloc de la macro, ou à en modifier certains critères, histoire de la décrypter un peu mieux. Mais bon, j'ai de la route devant moi ! (En plus, j'agis en catimini au boulot pour m'éviter des regards réprobateurs.)

En tout cas, je suis heureuse du résultat et je vous remercie encore non seulement pour votre aide mais aussi pour votre gentillesse.

DoubleZero : la souris rose, quelle délicate attention !

Bonne soirée,
gozi
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 866
Membres
103 979
dernier inscrit
imed