Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

trier des donnees

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

manulemalin13000

XLDnaute Occasionnel
Bonjour,

J’ai besoin d ‘aide pour une macro…
J’ai le fichier suivant qui est un extrait d un tres long fichier.

1/ Il faudrait que pour les colonnes E et H chaque fois qu il y a un « 1 » tout le contenu de la ligne soit copié vers un second onglet : celui nommé « probleme ». Et que cette ligne n apparaisse plus dans l’onglet de depart. Ceci dqans un but de trier certaines donnees.

2/ Ensuite, en colonne D quelques cellules vides (en D5 et D9)
Il faudrait que lorsque la macro rencontre une cellule vide elle copie a la place la cellule d en dessous et celle d a coté

Concretement :

En D5 un vide… la macro copie en C6 et D6 et colle ca en C5 et D5 puis Supprime la ligne 6. Et ainsi de suite pour toute la feuille de calcule et uniquement pour la colonne D.

Merci pour votre aide.
 

Pièces jointes

Dernière édition:
Re : trier des donnees

Bonjour manu, bonjour le forum,

En pièce jointe ton fichier avec la macro commentée ci-dessous:
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim x As Integer 'déclare la variable x (incrément de boucle)
 
With Sheets("Sheet1") 'prend en compte l'onglet "Sheet1"
    dl = .Range("D65536").End(xlUp).Row 'définit la dernière ligne
    For x = dl To 1 Step -1 'boucle inversée de la dernière à la première ligne
        If .Cells(x, 4).Value = "" Then 'condition si la cellule de la colonne D est vide
            'copie la plage C:D de la ligne en dessous et la colle dans la colonne C
            .Range(.Cells(x + 1, 3), .Cells(x + 1, 4)).Copy .Cells(x, 3)
            .Rows(x + 1).Delete Shift:=xlUp 'supprime la ligne en dessous
        End If 'fin de la condition
    Next x 'prochaine ligne de la boucle
    dl = .Range("E65536").End(xlUp).Row 'redéfinit la dernière ligne
    For x = dl To 1 Step -1 'boucle inversée de la première à la dernière ligne
        'conditiuon 1 : si la valeur de la cellule de la colonne E ou la valeur de la cellule de la colonne H contient "1"
        If CStr(.Cells(x, 5).Value) = "1" Or CStr(.Cells(x, 8).Value) = "1" Then
            'définit la cellule de destination
            If Sheets("Probleme").Range("A1").Value = "" Then 'condition 2 : si A1 de l'onglet "Probleme" est vide
                Set dest = Sheets("Probleme").Range("A1") 'dest est A1
            Else 'sinon
                'dest est la première cellule vide rencontrée en colonne A
                Set dest = Sheets("Probleme").Range("A65536").End(xlUp).Offset(1, 0)
            End If 'fin de la condition2
            .Rows(x).Copy dest 'copie et la colle dans dest
            .Rows(x).Delete Shift:=xlUp 'supprime la ligne
        End If 'fin de la condition 1
    Next x 'prochaine ligne de la boucle
End With 'fin de la prise en compte de l'onglet "Sheet1"
End Sub
 

Pièces jointes

Re : trier des donnees

Re,

Merci beaucoup pour ton aide... ce n'etait pas precisement dans l ordre d'execution ce que je voulais mauis avec la macro que tu as ecrite j'ai reussi a faire ce que je recherchais en modifiant deux petites choses.

Merci encore

Manu
 
Re : trier des donnees

Re à nouveau,

J'ai tout de même une petite modif a faire

J ai des cas ou en colonne C j'ai deux cases vides qui se suivent

Est il possible d'écrire une ligne VBA qui demande quand deux cases blanches de la colonne C se suivent supprimer la deuxième ligne.

Exemple:

Cases vides en C40 et C41
Sélectionner ligne 41 et la supprimer

Merci pour votre aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
179
Réponses
3
Affichages
201
wDog66
W
Réponses
7
Affichages
634
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…