Trier et insérer des titres
Résolu
guillaume gdco
Messages postés
68
Date d'inscription
Statut
Membre
Dernière intervention
-
guillaume gdco Messages postés 68 Date d'inscription Statut Membre Dernière intervention -
guillaume gdco Messages postés 68 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterai trier mon tableau par ordre alphabétique et insérer des titres entre chaque groupe de lignes.
je vais tenter d'être plus clair...
une fois mon tableau trier, jusqu'à la je m'en sort, je souhaiterai insérer une ligne contenant un titre avant les lignes commençant par A, une ligne contenant un titre avant les lignes commençant par B etc..
j'ai bien évidement pas toute les lignes de A à Z, cela dépend du tableau exporter.
De plus, si je peux ajouter une ligne vide avant la ligne contenant le titre histoire d'aérer le tableau...
merci d'avance pour votre aide
Je souhaiterai trier mon tableau par ordre alphabétique et insérer des titres entre chaque groupe de lignes.
je vais tenter d'être plus clair...
une fois mon tableau trier, jusqu'à la je m'en sort, je souhaiterai insérer une ligne contenant un titre avant les lignes commençant par A, une ligne contenant un titre avant les lignes commençant par B etc..
j'ai bien évidement pas toute les lignes de A à Z, cela dépend du tableau exporter.
De plus, si je peux ajouter une ligne vide avant la ligne contenant le titre histoire d'aérer le tableau...
merci d'avance pour votre aide
Configuration: Windows / Internet Explorer 11.0
A voir également:
- Trier et insérer des titres
- Excel trier par ordre croissant chiffre - Guide
- Insérer video powerpoint - Guide
- Insérer signature word - Guide
- Comment insérer des points de suite sur word - Guide
- Insérer liste déroulante excel - Guide
10 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, utilises-tu Excel?
as-tu de l'expérience en VBA?
as-tu de l'expérience en VBA?
non très peu d'expérience, je parcours les forums pour apprendre.
un exemple pour tenter d'être plus clair
exemple fait " a la main":
Ce que j'ai avant

et ce que je veux après

Je n'ai qu'une douzaine de référence que je voudrai associées chacune à un titre
merci d'avance pour votre aide
un exemple pour tenter d'être plus clair
exemple fait " a la main":
Ce que j'ai avant
et ce que je veux après
Je n'ai qu'une douzaine de référence que je voudrai associées chacune à un titre
merci d'avance pour votre aide
Configuration: Windows / Internet Explorer 11.0
J'ai codé ainsi pour déjà insérer une ligne avant une cellule, mais ça n'a pas l'effet voulu.
voici mon tableau

Je pense que "DJ TT ne suffit pour faire un essai, je dois préciser que c'est le début de la référence qui doit être pris en compte.
et ensuite ajouter une ligne pour chaque possibilité? DTER PDL, ERLN, ETER etc..
Sub DelEditeur()
Dim i As Integer
With ThisWorkbook.Sheets("Export")
'Précisez le nom de votre feuille
For i = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
'je travaille sur la colonne a
'Rows.count permet de retourner le nombre de ligne de la plage range
If .Range("C" & i).Value = "DJ TT" Then
.Rows(i).Insert Shift:=xlUp
End If
Next i
End With
End Sub
voici mon tableau
Je pense que "DJ TT ne suffit pour faire un essai, je dois préciser que c'est le début de la référence qui doit être pris en compte.
et ensuite ajouter une ligne pour chaque possibilité? DTER PDL, ERLN, ETER etc..
"ça n'a pas l'effet voulu": peux-tu en dire plus? quel est le rôle de la colonne C?
il me semble que l'insertion fonctionne bien.
suggestion, qui insère une ligne quand il y a un changement dans les 5 premiers caractères du texte:
il me semble que l'insertion fonctionne bien.
suggestion, qui insère une ligne quand il y a un changement dans les 5 premiers caractères du texte:
Option Explicit Sub DelEditeur() Dim ligne As Long, texte As String, ancientexte As String, ex As Worksheet ancientexte = "" Set ex = ThisWorkbook.Sheets("Export") 'Précisez le nom de votre feuille For ligne = ex.Cells(ex.Rows.Count, 1).End(xlUp).Row To 1 Step -1 'je travaille sur la colonne a 'Rows.count permet de retourner le nombre de ligne de la plage range texte = Left(ex.Cells(ligne, 1).Value, 5) If texte <> ancientexte Then If ancientexte <> "" Then ex.Rows(ligne + 1).Insert Shift:=xlUp End If ancientexte = texte End If Next ligne End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci ça m'aide à avancer dans mon projet.
ça marche parfaitement mais je souhaiterai faire une exclusion dans mon tri
je souhaiterai que tout les textes commençant par TT restent "ensemble" et ne soit pas séparé par un ajout de ligne avec le tri à la 5eme lettre.
Cela m'a donc créé des "groupes " de lignes auxquelles je souhaiterai insérer une ligne titre en lien avec les 5 premières lettres
ça marche parfaitement mais je souhaiterai faire une exclusion dans mon tri
je souhaiterai que tout les textes commençant par TT restent "ensemble" et ne soit pas séparé par un ajout de ligne avec le tri à la 5eme lettre.
Cela m'a donc créé des "groupes " de lignes auxquelles je souhaiterai insérer une ligne titre en lien avec les 5 premières lettres
Pour mon premier point de ne pas ajouter de ligne entre le "TT" j'ai essayé de rajouter .Criteria1:="<> TT*" mais je suis en erreur de syntaxe
Dim ligne As Long, texte As String, ancientexte As String, ex As Worksheet
ancientexte = ""
Set ex = ThisWorkbook.Sheets("Export")
'Précisez le nom de votre feuille
For ligne = ex.Cells(ex.Rows.Count, 1).End(xlUp).Row To 1 Step -1
'je travaille sur la colonne a
'Rows.count permet de retourner le nombre de ligne de la plage range
texte = Left(ex.Cells(ligne, 1).Value, 5).Criteria1:="<> TT*"
If texte <> ancientexte Then
If ancientexte <> "" Then
ex.Rows(ligne + 1).Insert Shift:=xlUp
End If
ancientexte = texte
End If
Next ligne
Pour être plus clair:
si les 5 première lettres de ma référence commence par DTERF alors je veux le titre Nord
si les 5 première lettres de ma référence commence par ETERC alors je veux le titre Sud
et ainsi de suite...
Et si les deux première lettre sont TT je veux le titre: Réf
j'ai essayé ça mais sans résultat
si les 5 première lettres de ma référence commence par DTERF alors je veux le titre Nord
si les 5 première lettres de ma référence commence par ETERC alors je veux le titre Sud
et ainsi de suite...
Et si les deux première lettre sont TT je veux le titre: Réf
j'ai essayé ça mais sans résultat
For ligne = ex.Cells(ex.Rows.Count, 1).End(xlUp).Row To 1 Step -1
texte = Left(ex.Cells(ligne, 1).Value, 5)
If texte <> ERLN Then
ex.Rows(ligne + 1).Insert Value = ("nord")
Next ligne
j'avance mais je suis confronté à de nouveaux problèmes:
1 - je souhaite garder une ligne vide au dessus de chaque titre pour aérer mon tableau
2 - je souhaite que mon titre soit en rapport avec les 5 premières lettres de la référence présente en première colonne.
je suppose que je dois écrire tous les titres possibles, les lier au 5 premières lettres de la référence correspondantes ( sauf pour mes référence commençant par TT ou là je ne prends que les deux première lettres pour lier mon titre )

1 - je souhaite garder une ligne vide au dessus de chaque titre pour aérer mon tableau
2 - je souhaite que mon titre soit en rapport avec les 5 premières lettres de la référence présente en première colonne.
je suppose que je dois écrire tous les titres possibles, les lier au 5 premières lettres de la référence correspondantes ( sauf pour mes référence commençant par TT ou là je ne prends que les deux première lettres pour lier mon titre )
suggestion:
Sub DelEditeur() Dim ligne As Long, texte As String, ancientexte As String, ex As Worksheet, titre As String ancientexte = "" Set ex = ThisWorkbook.Sheets("Export") 'Précisez le nom de votre feuille For ligne = ex.Cells(ex.Rows.Count, 1).End(xlUp).Row To 1 Step -1 'je travaille sur la colonne a 'Rows.count permet de retourner le nombre de ligne de la plage range texte = Left(ex.Cells(ligne, 1).Value, 5) If Left(texte, 2) = "TT" Then texte = "TT" End If If texte <> ancientexte Then If ancientexte <> "" Then ex.Rows(ligne + 1).Insert Shift:=xlUp ex.Rows(ligne + 1).Insert Shift:=xlUp Select Case ancientexte Case "TT": titre = "Réf" Case "DTERF": titre = "Nord" Case "ETERC": titre = "Sud" Case Else: titre = "?" End Select ex.Cells(ligne + 2, 3) = titre End If ancientexte = texte End If Next ligne End Sub
à quoi sert la ligne Case Else?
cette ligne est la seule prise en compte

cette ligne est la seule prise en compte
Dim ligne As Long, texte As String, ancientexte As String, ex As Worksheet, titre As String
ancientexte = ""
Set ex = ThisWorkbook.Sheets("Export")
'Précisez le nom de votre feuille
For ligne = ex.Cells(ex.Rows.Count, 1).End(xlUp).Row To 1 Step -1
'je travaille sur la colonne a
'Rows.count permet de retourner le nombre de ligne de la plage range
texte = Left(ex.Cells(ligne, 1).Value, 5)
If Left(texte, 2) = "TT" Then
texte = "TT"
End If
If texte <> ancientexte Then
If ancientexte <> "" Then
ex.Rows(ligne + 1).Insert Shift:=xlUp
ex.Rows(ligne + 1).Insert Shift:=xlUp
Select Case ancientexte
Case "TT":
titre = "Référentiel"
Case "DTER PDL":
titre = "Direction TER Pays de la Loire (DTER PDL)"
Case "EIC BFC":
titre = "EIC Bourgogne Franche Comté (EIC BFC)"
Case "ERLN":
titre = "Etablissement Régional Lignes Normandes (ERLN)"
Case "ETER CVL":
titre = "d'établissement de ETER Centre Val de Loire (ETER CVL)"
Case "TER HDF":
titre = "Direction TER Hauts de France (TER HDF)"
Case "TER AURA":
titre = "Direction TER Auvergne Rhône Alpes (TER AURA)"
Case "TER GE":
titre = "Direction TER Grand Est (TER GE)"
Case "TER NA":
titre = "Direction TER Nouvelle Aquitaine (TER NA)"
Case "TER OC":
titre = "Direction TER Occitanie (TER OC)"
Case "DJ":
titre = "Référentiel de la région de Dijon (DJ)"
Case "MR":
titre = "Référentiel de la région de Marseille (MR)"
Case "RN":
titre = "Référentiel de la région de Rennes (RN)"
Case "RN":
titre = "Référentiel de la région de Rennes (RN)"
Case Else:
titre = "?"
End Select
ex.Cells(ligne + 2, 2) = titre
End If
ancientexte = texte
End If
Next ligne
merci d'utiliser les balises de code quand tu publies du code, et d'utiliser le type de code "basic".
tu as écrit "je souhaite que mon titre soit en rapport avec les 5 premières lettres de la référence": il faut donc que les textes qui suivent "case" aient exactement 5 caractères de long (sauf "TT")
tu as écrit "je souhaite que mon titre soit en rapport avec les 5 premières lettres de la référence": il faut donc que les textes qui suivent "case" aient exactement 5 caractères de long (sauf "TT")
je ne comprends pas pourquoi insérer le contenu de la troisième colonne ?
Je veux insérer un titre en rapport avec la référence comme en exemple message 2
Je veux insérer un titre en rapport avec la référence comme en exemple message 2
besoin d'aide pour insérer des titres
si les 5 première lettres de ma référence commence par DTERF alors je veux le titre Nord
si les 5 première lettres de ma référence commence par ETERC alors je veux le titre Sud
et ainsi de suite...
Et si les deux première lettre sont TT je veux le titre: Réf
personnes pour m'aider?
si les 5 première lettres de ma référence commence par DTERF alors je veux le titre Nord
si les 5 première lettres de ma référence commence par ETERC alors je veux le titre Sud
et ainsi de suite...
Et si les deux première lettre sont TT je veux le titre: Réf
personnes pour m'aider?