Autres Insérer des lignes en fonction de

Kev21722

XLDnaute Nouveau
Bonjour,
Je sèche, j’aimerais insérer une ligne quand le service change.
Il y a 5 services dans l’ordre voici leur nom:
- service 1
- service 4
- service 2
- laveur
- service 3
Il y a un nombre de personne dans chaque service qui varie chaque jour. Est ce possible de mettre le nom du service à l’insertion et une couleur gris clair en marge et centre ?
voici un exemple du fichier vide sans personnel
Le service 1 comme sur la photo est déjà fait
Les infos concernant les services de trouve dans la colonne « F »
Et quand on insert la ligne elle doit aller de « À à F » car la colonne « F » est lié au personnel
Dans la colonne « d » il y a une formule recherchée
Merci d’avance
 

Pièces jointes

  • 2E7F2918-626B-4E47-8E1A-43DA5E385BE0.png
    2E7F2918-626B-4E47-8E1A-43DA5E385BE0.png
    326.9 KB · Affichages: 30
Solution
@Kev21722

bon, j'ai quand même réussi à prendre un moment pour faire ton exo. :)

ouvre le fichier, regarde les données, et fais Ctrl e ➯ travail effectué ! 😊

code VBA (22 lignes) :

VB:
Option Explicit

Sub Essai()
  Dim chn$, lig&: Application.ScreenUpdating = 0
  lig = Cells(Rows.Count, 6).End(3).Row: If lig = 2 Then Exit Sub
  Do
    chn = Cells(lig, 6)
    If Cells(lig - 1, 6) <> chn Then
      Rows(lig).Insert 4, 1
      With Cells(lig, 1)
        With .Resize(, 5)
          .Merge: .Font.FontStyle = "Gras italique"
          .HorizontalAlignment = 3: .Interior.Color = 14211288
        End With
        .Value = chn: .Offset(, 1).Interior.Pattern = 17
      End With
      lig = lig - 1...

soan

XLDnaute Barbatruc
Inactif
Bonjour Kev,

bienvenue sur le site XLD ! :)

1) c'est fortement déconseillé d'insérer des lignes vides intercalaires dans un tableau ; 2) tu peux utiliser le filtre automatique pour voir uniquement les lignes du service 1, puis uniquement les lignes du service 4, etc... 3) tu peux éventuellement faire un tableau structuré (+ éventuellement te servir de PowerQuery, si tu as une version récente d'Excel) ; peut-être alors que tu n'auras plus besoin de mettre des couleurs ? 4) une image .png n'encourage pas les contributeurs à répondre ! ni un tableau avec si peu de données (et que 2 données différentes !) ; il vaut mieux que tu envoies un fichier Excel exemple avec plus de données ; mais que des données fictives : ton fichier ne devra pas contenir des infos confidentielles ! j'aurai pas le temps de m'en occuper, mais un autre contributeur te répondra sûrement ; bonne chance ! 🍀

soan
 
Dernière édition:

Kev21722

XLDnaute Nouveau
Bonjour Kev,

1) c'est fortement déconseillé d'insérer des lignes vides intercalaires dans un tableau ; 2) tu peux utiliser le filtre automatique pour voir uniquement les lignes du service 1, puis uniquement les lignes du service 4, etc... 3) tu peux éventuellement faire un tableau structuré (+ éventuellement te servir de PowerQuery, si tu as une version récente d'Excel) ; peut-être alors que tu n'auras plus besoin de mettre des couleurs ? 4) une image .png n'encourage pas les contributeurs à répondre ! ni un tableau avec si peu de données (et que 2 données différentes !) ; il vaut mieux que tu envoies un fichier Excel exemple avec plus de données ; mais que des données fictives : ton fichier ne devra pas contenir des infos confidentielles ! j'aurai pas le temps de m'en occuper, mais un autre contributeur te répondra sûrement ; bonne chance ! 🍀

soan
Bonjour Soan,
Le fichier est une liste de personnel imprimé
Chaque jour et l’insertion de la ligne permets de séparer les services sur la feuille d’impression.
pour le fichier étant donné qu’il y a des formules et mfc c’est compliqué d’envoyé un avec des données fictive. Ce qu’il faut c’est vraiment une macro/vba pour faire la chose.
Bonne journée
 

soan

XLDnaute Barbatruc
Inactif
@Kev21722

bon, j'ai quand même réussi à prendre un moment pour faire ton exo. :)

ouvre le fichier, regarde les données, et fais Ctrl e ➯ travail effectué ! 😊

code VBA (22 lignes) :

VB:
Option Explicit

Sub Essai()
  Dim chn$, lig&: Application.ScreenUpdating = 0
  lig = Cells(Rows.Count, 6).End(3).Row: If lig = 2 Then Exit Sub
  Do
    chn = Cells(lig, 6)
    If Cells(lig - 1, 6) <> chn Then
      Rows(lig).Insert 4, 1
      With Cells(lig, 1)
        With .Resize(, 5)
          .Merge: .Font.FontStyle = "Gras italique"
          .HorizontalAlignment = 3: .Interior.Color = 14211288
        End With
        .Value = chn: .Offset(, 1).Interior.Pattern = 17
      End With
      lig = lig - 1
    End If
    lig = lig - 1
  Loop Until lig = 1
End Sub

soan
 

Pièces jointes

  • Exo Kev21722.xlsm
    16.3 KB · Affichages: 6

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 922
Messages
2 093 644
Membres
105 775
dernier inscrit
assen