Insérer des lignes dans un tableau
#1
Débutant XLPages

Inscription: 08/06/2015
De France

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 08-06-2015 22h09

Bonjour,

 

J'ai un tableau que je voudrais "couper" à différents endroits. J'ai fait un tri des données et je voudrait insérer une ligne à chaque fois qu'un caractère change (le nom par exemple). Comment faire?

 

Cordialement, 

 

Florian

Hors Ligne
Rapport   Haut 

Re: Insérer des lignes dans un tableau
#2
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 09-06-2015 00h36

Bonsoir Florian, bonsoir à tous,

 

Peut-être avec une macro, un essai dans le fichier joint, avec ce code (cliquer sur le bouton Go dans l'onglet):

Option Explicit
Sub Insertion()

'Déclaration des variables
Dim lig As Long, i As Long

With ActiveSheet 'Travaille sur l'onglet actif

 'Calcule la dernière cellule remplie de la colonne A
 'à adapter, par exemple pour la colonne D remplacer le 1 par 4:
 lig = .Cells(Rows.Count, 1).End(xlUp).Row
 
 If lig > 1 Then   'S'il y a au moins deux lignes:
  
  'boucle de la dernière ligne à la ligne 3 (s'il y a un intitulé de colonne ligne 1)
  'en remontant d'un pas de 1
  For i = lig To 3 Step -1
   
   'Teste si la cellule est différente de la cellule au dessus
   If .Cells(i, 1) <> .Cells(i - 1, 1) Then
    .Cells(i, 1).EntireRow.Insert 'insérer une ligne
   End If 'Fin du test si cellules différentes
  
  Next i 'passage à la ligne précédente pour la boucle (For ...)
 
 End If ' Fin du premier If si ligne >1

End With 'fermeture du WITH

End Sub

Très bonne soirée,

 

mth

Pièce jointe:
xlsm Florian.xlsm   [ Taille: 20.56 Ko - Téléchargements: 430 ]
Hors Ligne
Rapport   Haut 

Re: Insérer des lignes dans un tableau
#3
Débutant XLPages

Inscription: 08/06/2015
De France

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 09-06-2015 14h47

Ok. Merci pour ta réponse rapide. J'ai testé ta macro et elle fonctionne très bien sauf que j'ai voulu la tester pour la 3ème colonne, elle ne fonctionne plus (j'ai remplacé le 1 par un 3 dans la macro comme indiqué en commentaire). Je précise que les 2 premières colonnes étaient remplis. 

 

Ce n'est pas très grave puisque les infos des 2 premières colonnes ne sont pas importantes pour ce que je veut faire donc je les ai supprimé ;)

 

J'ai une autre question : Maintenant que j'ai fait des écarts je souhaiterait comparer les valeurs de 2 colonnes. En effet dans la colonne H de mon classeur j'ai des distances (que j'ai trié en ordre croissante avant de faire la séparation de lignes)  et dans la colonne J j'ai des des dates+heures (sous le format jj/mm/aaaa hh:mm). Ce que je souhaiterais faire c'est une macro qui permettrai pour chaque mini tableau (entre 2 écarts de lignes) de comparer si les heures sont bien en ordre croissante. Le résultat serait visible rapidement puisque si les heures sont en ordre croissante : elles s'affichent en vert. Sinon elle s'affiche en rouge.

 

J'espère avoir été clair. N'hésitez pas à me poser des questions si vous souhaitez avoir plus de détails. 

 

Je pense que ce que je demande est réalisable. 

 

Cordialement,

 

Florian

Hors Ligne
Rapport   Haut 

Re: Insérer des lignes dans un tableau
#4
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 10-06-2015 00h01

Bonsoir Florian, bonsoir à tous,

 

J'ai modifié le code pour travailler colonne 3, cf ci-dessous

 

Option Explicit
Sub Insertion()

'Déclaration des variables
Dim lig As Long, i As Long

With ActiveSheet 'Travaille sur l'onglet actif

 'Calcule la dernière cellule remplie de la colonne C
 'à adapter, par exemple pour la colonne D remplacer le 3 par 4:
 lig = .Cells(Rows.Count, 3).End(xlUp).Row
 
 If lig > 1 Then   'S'il y a au moins deux lignes:
  
  'boucle de la dernière ligne à la ligne 3 (s'il y a un intitulé de colonne ligne 1)
  'en remontant d'un pas de 1
  For i = lig To 3 Step -1
   
   'Teste si la cellule est différente de la cellule au dessus
   'pour travailler sur la colonne D remplacer égalemet ici 3 par 4
   If .Cells(i, 3) <> .Cells(i - 1, 3) Then
    .Cells(i, 3).EntireRow.Insert 'insérer une ligne
   End If 'Fin du test si cellules différentes
  
  Next i 'passage à la ligne précédente pour la boucle (For ...)
 
 End If ' Fin du premier If si ligne >1

End With 'fermeture du WITH

'appelle la macro de mise en forme
Call Coloriage

End Sub

 

Pour la question suivante il y a plusieurs pistes, une très simple par exemple consiste à écrire une formule dans une nouvelle colonne, une fois que la macro est terminée, formule qui teste la valeur de la cellule par rapport à celle du dessus et affiche un résultat (ici des points d'exclamation) selon le résultat du test.

En PJ cellule E1 et copiée vers le bas:

=SI(ET(D2<>0;D2

 

Autre piste: la mise en forme conditionnelle. Sélectionner les cellules devant appliquer la mise en forme puis voir menu Accueil/Mise en forme conditionnelle/Gérer les règles.

Puis pour modifier une règle: la sélectionner et modifier

Ou pour créer une nouvelle règle: cliquer sur "Nouvelle règle" puis "Utiliser une formule etc." et écrire la formule.

Par exemple formule pour la condition 1:

=ET($D2<>0;$D2>$D1)

On peut aussi intégrer la mise en forme conditionnelle dans une macro, par exemple:

 

 

Option Explicit

Sub Coloriage()
'Déclaration des variables
Dim lig As Long, i As Long

With ActiveSheet 'Travaille sur l'onglet actif

 'Calcule la dernière cellule remplie de la colonne C
 'à adapter, par exemple pour la colonne D remplacer le 3 par 4:
 lig = .Cells(Rows.Count, 3).End(xlUp).Row
 
 If lig > 1 Then   'S'il y a au moins deux lignes:
 
     'travaille sur la plage de cellules colonne D
     With .Range("D2:D" & lig)
     
        'efface les Mises en formes conditionnelles présentes
        .FormatConditions.Delete
        'Ajoute une formule de mise en forme conditionnelle condition 1
        'la valeur est supérieure à celle du dessus
        .FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=ET($D2<>0;$D2>$D1)"
        
            'Détermine la couleur verte(à adapter selon des goûts)
            With .FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .Color = 60113
                .TintAndShade = 0
            End With

        'Ajoute une formule de mise en forme conditionnelle condition 1
        'la valeur est inférieure à celle du dessus
        .FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=ET($D2<>0;$D2<$D1)"
                        
            'Détermine la couleur rouge(à adapter selon des goûts)
            With .FormatConditions(2).Interior
                .PatternColorIndex = xlAutomatic
                .Color = 4261375
                .TintAndShade = 0
            End With
        End With
    End If
End With
End Sub

 

C'est ce que j'ai fait dans le fichier joint.

Vois si cela peut t'aider,

Bonne soirée,

 

mth

 

Pièce jointe:
xlsm Copie de Florian.xlsm   [ Taille: 23.53 Ko - Téléchargements: 415 ]
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes