Supprimer des lignes disperses sur excel

amnay2

XLDnaute Nouveau
Bonjour,

J'ai une base de données avec des milliers de lignes, ou il y a des lignes disperses contenanant que des 0. est ce qu'il n y a pas de manipulation sur excel pour supprimer toutes ses lignes d'un coup, ou alors un programme en vb qui peut faire ca?

Merci
 

porcinet82

XLDnaute Barbatruc
Re : Supprimer des lignes disperses sur excel

re,

Pour arnaud_garou, j'ai modifier ton code et ca devrait fonctionner

PHP:
Sub CodePays()
Dim MaPlage As Range
Dim Cellule As Range
Dim i As Integer, val As Variant

Windows("Monthly Anomaly Report.xls").Activate
Sheets("Workfile").Select
With Sheets("Workfile")
    Set MaPlage = Sheets("Anomalies, country codes").Range("D6:" & Range("D6").End(xlDown).Address(0, 0))
    For i = 6 To .Range("K65536").End(xlUp).Row
        val = .Cells(i, 11).Value
        For Each Cellule In MaPlage
            val2 = Cellule
            If val = Cellule Then
                .Cells(i, 1) = Sheets("Anomalies, country codes").Cells(Cellule.Row, 5)
                Exit For
            End If
        Next Cellule
    Next i
End With
End Sub

@+
 

porcinet82

XLDnaute Barbatruc
Re : Supprimer des lignes disperses sur excel

re,

Jean-Louis, le Dim i% permet de déclarer le i en Integer, mais comme je suis un peu fainéant de nature (c'est d'ailleur pour ca que je me suis mis au vba), je préfère le % plutot que tout taper.
Tu as également :
  • & pour Long
  • $ pour String
  • # pour Double
  • ! pour Single
Voili, voilou,

@+
 

amnay2

XLDnaute Nouveau
Re : Supprimer des lignes disperses sur excel

Merci porcinet82 et Merci à tous aussi

Ton premier programme a marché sur la base en question, le deuxieme n'a pas marché, en fait ils m'ont demandé de specifier les cellules et comme je comprends rien, donc pas fait grand chose.
Je sais pas si vous avez tous compris mon 2 eme probleme que j'avais expliqué sur mes autres messages sur les doublons.

Enfin vous voulez des précisions, dites le moi.

C'est trop top ce truc de forum.

Merci :D
 

porcinet82

XLDnaute Barbatruc
Re : Supprimer des lignes disperses sur excel

re,

Amnay, si tu fais référence à ton problème de somme de produit, je t'ai mis dans mon post de ce matin 11h24, ceci
Par contre je reviens sur le problème d'amnay et de ces sommes de produit, je ne vois toujours pas comment savoir s'il s'agit d'un produit ou d'une somme de produit.
Est-ce que tu pourrais mettre un fichier joint en passant par Cjoint.com avec ce que tu as au départ et le résultat que tu souhaites obtenir.

@+
 

amnay2

XLDnaute Nouveau
Re : Supprimer des lignes disperses sur excel

Bonjour Porcinet82,

Je vais joindre un fichier qui s'intitulera "supprimer les doublons amnay".
En meme temps je sais pas comment utiliser ce fichier joint, mais bon j'espere que ca va marcher.

si ca marche faites mois signe.

vous remarquerez souvent qu'une cellule est la somme de plusieurs cellules. il faut que jenleve toutes les sommes et ne garder que les vrai valeurs.

Merci.... si besoin d'info n'hesitez pas...
 

porcinet82

XLDnaute Barbatruc
Re : Supprimer des lignes disperses sur excel

re Amnay,

Je viens de jeter un oeil a ton fichier et je ne vois pas les lignes correspondant aux sommes d'autres lignes.
Je ne suis peut etre pas tres concentré puisque je regarde le match en même temps, mais il me semble pas.

Donne nous plus d'info,

@+
 

amnay2

XLDnaute Nouveau
Re : Supprimer des lignes disperses sur excel

Bonjour Porcinet82,

C'est vrai que c pas le moment, mais bon tant qu'on gagne... :D

Si on prends l'exemple de poisson:
B19 c 'est le total general de toutes les references requin.

B19 = B24 + B25 + B29 + B30 + B34
B21, B22 et B23 c'est la somme de B24 + B25
B26, B27, et B28 c'est la somme de B29 + B30

le programme devrait normalement enlever B19 jusqu'a 23 parceque ce sont des sommes ou des doublons, il devrait enlever de B26 jusqu'a B28 et de B31 à B33...

il devrait garder B24 + B25 + B29 + B30 + B34 qui est la somme totale....

aussi, quand il s'agit de doublon comme le cas de B31 à B34, il doit garder la reference la plus detaillé, dans ce cas la 'requin 300 12.X MONO SS.NOIS NOIR_DE_NOIR , generalement elle se trouve toujours en dernier de la succession des doublons....

je presume que c'est pas simple, deja à explique, c difficile.. en tout cas bonne chance et si vous y arrivez pas, c pas grave... vous m'avez deja bcp aidé

Merci, c vraiment gentil à vous tous....
 

arnaud_garou

XLDnaute Nouveau
Suite de mon programme... tjr un probleme

Re bonjour!

Merci Porcinet pour ta reponse.

J'avais poste dans un autre topic car je pensais que cela n'avait plus rien a voir avec le probleme de suppression des ligne, fil de ce topic.

Bref.
J'ai mis en application ton code:

Sub CodePays()
Dim MaPlage As Range
Dim Cellule As Range
Dim i As Integer, val As Variant

Windows("Monthly Anomaly Report.xls").Activate
Sheets("Workfile").Select
With Sheets("Workfile")
Set MaPlage = Sheets("Anomalies, country codes").Range("D6:" & Range("D6").End(xlDown).Address(0, 0))
For i = 6 To .Range("K65536").End(xlUp).Row
val = .Cells(i, 11).Value
For Each Cellule In MaPlage
val2 = Cellule
If val = Cellule Then
.Cells(i, 1) = Sheets("Anomalies, country codes").Cells(Cellule.Row, 5)
Exit For
End If
Next Cellule
Next i
End With
End Sub




Au debut, cela ne donnait rien...
J'ai donc redimensionne une des variables en string, et la ca marchait un peu mieux...
Mais le code s'arrete de remplir la premiere colonne de la feuille losrqu'il se trouve sur une ligne precedant un ligne ou la colonne K (celle ou se trouvent les codes pays dans la feuille workfile) est vide.
Je pense qu'il faudrait faire un test du style: "si la case n'est pas vide, comparer la valeur, sinon passer a la case suivante"
Voici mon code:

Sub CodedePays()
Dim MaPlage As Range
Dim Cellule As Range
Dim i As Integer, val As String
'Variant

Windows("Monthly Anomaly Report").Activate
Sheets("Workfile").Select
With Sheets("Workfile")
Set MaPlage = Sheets("Anomalies, country codes").Range("D2:" & Range("D2").End(xlDown).Address(0, 0))
For i = 6 To .Range("K65536").End(xlUp).Row
val = .Cells(i, 11).Value
For Each Cellule In MaPlage
val2 = Cellule
If val = Cellule Then
.Cells(i, 1) = Sheets("Anomalies, country codes").Cells(Cellule.Row, 5)
Exit For
End If
Next Cellule
Next i
End With
End Sub




Merci par avance!
 

arnaud_garou

XLDnaute Nouveau
Suite de mon programme... tjr un probleme 2

Bon en fait j'ai bidouille un peu , maintenant le programme marche, meme s'il n'est pas propre...

Sub CodedePaysProcinet()

Dim MaPlage As Range
Dim Cellule As Range
Dim i As Integer, val As String
'Variant

Windows("Monthly Anomaly Report.xls").Activate
Sheets("Workfile").Select
With Sheets("Workfile")
Set MaPlage = Sheets("Anomalies, country codes").Range("D2:D13")
'" & Range("D2").End(xlDown).Address(0, 0))
' comme tu le vois porcinet, j'ai entre directement la plage de cellules contenant mes codes de reference, et la ca marche...
For i = 6 To .Range("K65536").End(xlUp).Row
val = .Cells(i, 11).Value
For Each Cellule In MaPlage
'val2 = Cellule; ca je ne comprends pas a quoi ca servait...
If val = Cellule.Value Then
.Cells(i, 1) = Sheets("Anomalies, country codes").Cells(Cellule.Row, 5)
Exit For
End If
Next Cellule
Next i
End With
End Sub



Tout ca pour dire que je prefererais faire comme tu as essaye, a savoir definir automatiquement la plage des codes de reference dans la feuille "Anomalies, country code", afin de pouvoir rajouter des valeurs par la suite....
Donc si tu as des idees...

Merci!
 

porcinet82

XLDnaute Barbatruc
Re : Supprimer des lignes disperses sur excel

Bonjour a tous,

Pour répondre tout d'abord à arnaud_garou, essaie de modifier la ligne de code de définition de la plage de la manière suivante et ca peut fonctionner. Au lieu de déterminer la dernière cellule non vide en partant du haut (je ne pensais pas que tu avais des cellules vides dans ta plage), je pars du bas
Set MaPlage = Sheets("Anomalies, country codes").Range("D2:" & Range("D65536").End(xlUp).Address(0, 0))

Tiens moi au courant,

@+
 

porcinet82

XLDnaute Barbatruc
Re : Supprimer des lignes disperses sur excel

re,

Pour Amnay, voici un code qui devrait t'enlever les doublons, par contre pour ce qui est des sommes, je ne vois vraiment pas comment on peut faire, donc si tu as une idée, je suis preneur :
PHP:
Sub Sup_doublons()
Dim i&, k&
Dim nom1 As Variant, nom2 As Variant
Dim nb_caract1%, nb_caract2%
For i = Range("A65536").End(xlUp).Row To 4 Step -1
    nom1 = Range("B" & i).Value & Range("C" & i).Value & Range("D" & i).Value
    nb_caract1 = Len(Cells(i, 1).Value)
    For k = Range("A65536").End(xlUp).Row - 1 To 4 Step -1
        If nom1 = "" Then Exit For
            nom2 = Range("B" & k).Value & Range("C" & k).Value & Range("D" & k).Value
            nb_caract2 = Len(Cells(k, 1).Value)
            If Not i = k Then
                If nom2 = nom1 Then
                    If nb_caract1 > nb_caract2 Then
                        Rows(k).Delete
                    Else
                        Rows(i).Delete
                    End If
                End If
            End If
    Next k
Next i
End Sub

Tiens moi au courant,

@+
 

Discussions similaires

Réponses
6
Affichages
169

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz