Trier et insérer des titres
Résolu/Fermé
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
-
22 juin 2019 à 17:57
guillaume gdco Messages postés 68 Date d'inscription samedi 15 août 2009 Statut Membre Dernière intervention 30 août 2020 - 17 avril 2020 à 20:30
guillaume gdco Messages postés 68 Date d'inscription samedi 15 août 2009 Statut Membre Dernière intervention 30 août 2020 - 17 avril 2020 à 20:30
A voir également:
- Trier et insérer des titres
- Excel trier par ordre croissant chiffre - Guide
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer table des matières word - Guide
10 réponses
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
Ambassadeur
1 557
22 juin 2019 à 19:34
22 juin 2019 à 19:34
bonjour, utilises-tu Excel?
as-tu de l'expérience en VBA?
as-tu de l'expérience en VBA?
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
22 juin 2019 à 19:43
22 juin 2019 à 19:43
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
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
22 juin 2019 à 20:37
22 juin 2019 à 20:37
moi je ferais un petit programme VBA qui parcourt les lignes de bas en haut, et, quand il détecte que le contenu le la première colonne change "beaucoup", insère une ligne de titre.
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
22 juin 2019 à 20:56
22 juin 2019 à 20:56
merci pour la piste, je vais creuser en ce sens
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
Modifié le 23 juin 2019 à 15:02
Modifié le 23 juin 2019 à 15:02
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..
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
Modifié le 23 juin 2019 à 17:29
Modifié le 23 juin 2019 à 17:29
"ç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
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
23 juin 2019 à 20:56
23 juin 2019 à 20:56
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
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
Modifié le 23 juin 2019 à 22:49
Modifié le 23 juin 2019 à 22:49
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
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
24 juin 2019 à 08:55
24 juin 2019 à 08:55
merci d'utiliser le type de code "basic".
suggestion:
suggestion:
texte = Left(ex.Cells(ligne, 1).Value, 5) if left (texte,2) = "TT" then texte = "TT" end if
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
26 juin 2019 à 09:10
26 juin 2019 à 09:10
ton soucis avec l'insertion de ligne entre les "TT" est-il résolu?
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
Modifié le 26 juin 2019 à 09:37
Modifié le 26 juin 2019 à 09:37
impeccable ça marche
merci à toi
merci à toi
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
24 juin 2019 à 00:29
24 juin 2019 à 00:29
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
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
24 juin 2019 à 08:58
24 juin 2019 à 08:58
le travail sur le titre a insérer doit se faire ainsi:
ex.Rows(ligne + 1).Insert Shift:=xlUp ex.cells(ligne+1,3)= "titre" 'contenu de la troisième colonne de la ligne insérée
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
26 juin 2019 à 10:15
26 juin 2019 à 10:15
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 )
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
Modifié le 26 juin 2019 à 12:50
Modifié le 26 juin 2019 à 12:50
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
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
Modifié le 26 juin 2019 à 13:14
Modifié le 26 juin 2019 à 13:14
à 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
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
>
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
26 juin 2019 à 13:56
26 juin 2019 à 13:56
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")
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
24 juin 2019 à 09:57
24 juin 2019 à 09:57
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
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
Modifié le 26 juin 2019 à 09:16
Modifié le 26 juin 2019 à 09:16
l'idée est plutôt de mettre le titre en troisième colonne, non? donc de modifier le contenu de la troisième colonne de la ligne insérée. as-tu testé? cela donne quoi?
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
24 juin 2019 à 20:49
24 juin 2019 à 20:49
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?
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
24 juin 2019 à 22:11
24 juin 2019 à 22:11
ex.Rows(ligne + 1).Insert Shift:=xlUp, Criteria1:=("<>TT")
marche pas non plus....
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
26 juin 2019 à 09:13
26 juin 2019 à 09:13
difficile de t'aider quand tu montres une seule ligne de code, que tu n'expliques pas ce que tu veux obtenir, ni ce qu'elle fait: "marche pas" est peu précis.
guillaume gdco
Messages postés
68
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
30 août 2020
26 juin 2019 à 10:17
26 juin 2019 à 10:17
je n'avais pas vu que tu avais répondu aux messages précédent, merci à toi