OVH Cloud OVH Cloud

Casse tete pour moi. Help Please !!!

5 réponses
Avatar
José
Bonjour, je tourne en rond pour effectuer par VBA la chose suivante

J'ai un tableau excel qui contient 3 colonnes

2 7 10
2 4 20
2 10 10
3 1 20
3 5 0
4 6 30
4 1 5
5 1 0
5 4 30

La première colonne correspond à un N° d'adresse, la seconde et la troisième
à une quantité

Mon problème est que je dois supprimer toutes les lignes d'une même adresse
si on moins une des quantités de la colonne 2 est supérieure à la quantité
de la colonne 3

Ex :
Chaque ligne de l'adresse 2 possède dans la colonne 2 une quantité <= à
celle de la colonne 3 ------> je conserve l'adresse 2
L'adresse 3 possède au moins 1 ligne (3 5 0) dont la quantité de la colonne
2 est > à celle de la colonne 3 ------> je dois supprimer toutes les lignes
ayant l'adresse 3
Et ainsi de suite

Dans mon exemple, au final je dois avoir toutes les lignes des adresses 2 et
4 et avoir supprimé toutes les lignes des adresses 3 et 5

Si pour vous cela ne présente pas de difficultés, merci d'avance pour votre
aide.

5 réponses

Avatar
anonymousA
bonjour,

j'ai supposé que ta première colonne était la colonne A. Ai fait les essais
sur cette base.

derligne = [A65536].End(xlUp).Row

Set premcell = Cells(derligne, 1)

Do While premcell.Row > 1

Set othercell = premcell

Do While othercell.Value = premcell.Value
mark = mark + 1
On Error Resume Next
Set othercell = othercell.Offset(-1, 0)
If Err.Number <> 0 Then Exit Do
Loop

If Err.Number = 0 Then Set tampcell = premcell.Offset(-mark, 0)

For I = 1 To mark
If premcell.Offset(1 - I, 1).Value > premcell.Offset(1 - I, 2).Value
Then
Range(premcell.Offset(1 - mark, 0), premcell.Offset(0,
2)).EntireRow.Delete

Exit For
End If
Next

mark = 0

If Err.Number <> 0 Then Exit Sub
Set premcell = tampcell

Loop

A+


Bonjour, je tourne en rond pour effectuer par VBA la chose suivante

J'ai un tableau excel qui contient 3 colonnes

2 7 10
2 4 20
2 10 10
3 1 20
3 5 0
4 6 30
4 1 5
5 1 0
5 4 30

La première colonne correspond à un N° d'adresse, la seconde et la troisième
à une quantité

Mon problème est que je dois supprimer toutes les lignes d'une même adresse
si on moins une des quantités de la colonne 2 est supérieure à la quantité
de la colonne 3

Ex :
Chaque ligne de l'adresse 2 possède dans la colonne 2 une quantité <= à
celle de la colonne 3 ------> je conserve l'adresse 2
L'adresse 3 possède au moins 1 ligne (3 5 0) dont la quantité de la colonne
2 est > à celle de la colonne 3 ------> je dois supprimer toutes les lignes
ayant l'adresse 3
Et ainsi de suite

Dans mon exemple, au final je dois avoir toutes les lignes des adresses 2 et
4 et avoir supprimé toutes les lignes des adresses 3 et 5

Si pour vous cela ne présente pas de difficultés, merci d'avance pour votre
aide.





Avatar
José
Peux tu STP me donner un peu le principe de ton code, car quand je le lance,
je n'obtiens pas le bon résultat. Je n'ai plus aucune ligne dans le fichier



"anonymousA" a écrit dans le message
news:
bonjour,

j'ai supposé que ta première colonne était la colonne A. Ai fait les
essais

sur cette base.

derligne = [A65536].End(xlUp).Row

Set premcell = Cells(derligne, 1)

Do While premcell.Row > 1

Set othercell = premcell

Do While othercell.Value = premcell.Value
mark = mark + 1
On Error Resume Next
Set othercell = othercell.Offset(-1, 0)
If Err.Number <> 0 Then Exit Do
Loop

If Err.Number = 0 Then Set tampcell = premcell.Offset(-mark, 0)

For I = 1 To mark
If premcell.Offset(1 - I, 1).Value > premcell.Offset(1 - I,
2).Value

Then
Range(premcell.Offset(1 - mark, 0), premcell.Offset(0,
2)).EntireRow.Delete

Exit For
End If
Next

mark = 0

If Err.Number <> 0 Then Exit Sub
Set premcell = tampcell

Loop

A+


Bonjour, je tourne en rond pour effectuer par VBA la chose suivante

J'ai un tableau excel qui contient 3 colonnes

2 7 10
2 4 20
2 10 10
3 1 20
3 5 0
4 6 30
4 1 5
5 1 0
5 4 30

La première colonne correspond à un N° d'adresse, la seconde et la
troisième


à une quantité

Mon problème est que je dois supprimer toutes les lignes d'une même
adresse


si on moins une des quantités de la colonne 2 est supérieure à la
quantité


de la colonne 3

Ex :
Chaque ligne de l'adresse 2 possède dans la colonne 2 une quantité <= à
celle de la colonne 3 ------> je conserve l'adresse 2
L'adresse 3 possède au moins 1 ligne (3 5 0) dont la quantité de la
colonne


2 est > à celle de la colonne 3 ------> je dois supprimer toutes les
lignes


ayant l'adresse 3
Et ainsi de suite

Dans mon exemple, au final je dois avoir toutes les lignes des adresses
2 et


4 et avoir supprimé toutes les lignes des adresses 3 et 5

Si pour vous cela ne présente pas de difficultés, merci d'avance pour
votre


aide.







Avatar
twinley
Bonjour,

Tu parcours la sub en pas à pas avec F8.
Et tu balades ta souris sur les variable du code, pour voir comment
évolue leur contenu.

en principe...

à+twinley

José wrote:
Peux tu STP me donner un peu le principe de ton code, car quand je le lance,
je n'obtiens pas le bon résultat. Je n'ai plus aucune ligne dans le fichier



"anonymousA" a écrit dans le message
news:

bonjour,

j'ai supposé que ta première colonne était la colonne A. Ai fait les


essais

sur cette base.

derligne = [A65536].End(xlUp).Row

Set premcell = Cells(derligne, 1)

Do While premcell.Row > 1

Set othercell = premcell

Do While othercell.Value = premcell.Value
mark = mark + 1
On Error Resume Next
Set othercell = othercell.Offset(-1, 0)
If Err.Number <> 0 Then Exit Do
Loop

If Err.Number = 0 Then Set tampcell = premcell.Offset(-mark, 0)

For I = 1 To mark
If premcell.Offset(1 - I, 1).Value > premcell.Offset(1 - I,


2).Value

Then
Range(premcell.Offset(1 - mark, 0), premcell.Offset(0,
2)).EntireRow.Delete

Exit For
End If
Next

mark = 0

If Err.Number <> 0 Then Exit Sub
Set premcell = tampcell

Loop

A+



Bonjour, je tourne en rond pour effectuer par VBA la chose suivante

J'ai un tableau excel qui contient 3 colonnes

2 7 10
2 4 20
2 10 10
3 1 20
3 5 0
4 6 30
4 1 5
5 1 0
5 4 30

La première colonne correspond à un N° d'adresse, la seconde et la



troisième

à une quantité

Mon problème est que je dois supprimer toutes les lignes d'une même



adresse

si on moins une des quantités de la colonne 2 est supérieure à la



quantité

de la colonne 3

Ex :
Chaque ligne de l'adresse 2 possède dans la colonne 2 une quantité <= à
celle de la colonne 3 ------> je conserve l'adresse 2
L'adresse 3 possède au moins 1 ligne (3 5 0) dont la quantité de la



colonne

2 est > à celle de la colonne 3 ------> je dois supprimer toutes les



lignes

ayant l'adresse 3
Et ainsi de suite

Dans mon exemple, au final je dois avoir toutes les lignes des adresses



2 et

4 et avoir supprimé toutes les lignes des adresses 3 et 5

Si pour vous cela ne présente pas de difficultés, merci d'avance pour



votre

aide.












Avatar
anonymousA

Peux tu STP me donner un peu le principe de ton code, car quand je le lance,
je n'obtiens pas le bon résultat. Je n'ai plus aucune ligne dans le fichier



"anonymousA" a écrit dans le message
news:
bonjour,

j'ai supposé que ta première colonne était la colonne A. Ai fait les
essais

sur cette base.

derligne = [A65536].End(xlUp).Row

Set premcell = Cells(derligne, 1)

Do While premcell.Row > 1

Set othercell = premcell

Do While othercell.Value = premcell.Value
mark = mark + 1
On Error Resume Next
Set othercell = othercell.Offset(-1, 0)
If Err.Number <> 0 Then Exit Do
Loop

If Err.Number = 0 Then Set tampcell = premcell.Offset(-mark, 0)

For I = 1 To mark
If premcell.Offset(1 - I, 1).Value > premcell.Offset(1 - I,
2).Value

Then
Range(premcell.Offset(1 - mark, 0), premcell.Offset(0,
2)).EntireRow.Delete

Exit For
End If
Next

mark = 0

If Err.Number <> 0 Then Exit Sub
Set premcell = tampcell

Loop

A+


Bonjour, je tourne en rond pour effectuer par VBA la chose suivante

J'ai un tableau excel qui contient 3 colonnes

2 7 10
2 4 20
2 10 10
3 1 20
3 5 0
4 6 30
4 1 5
5 1 0
5 4 30

La première colonne correspond à un N° d'adresse, la seconde et la
troisième


à une quantité

Mon problème est que je dois supprimer toutes les lignes d'une même
adresse


si on moins une des quantités de la colonne 2 est supérieure à la
quantité


de la colonne 3

Ex :
Chaque ligne de l'adresse 2 possède dans la colonne 2 une quantité <= à
celle de la colonne 3 ------> je conserve l'adresse 2
L'adresse 3 possède au moins 1 ligne (3 5 0) dont la quantité de la
colonne


2 est > à celle de la colonne 3 ------> je dois supprimer toutes les
lignes


ayant l'adresse 3
Et ainsi de suite

Dans mon exemple, au final je dois avoir toutes les lignes des adresses
2 et


4 et avoir supprimé toutes les lignes des adresses 3 et 5

Si pour vous cela ne présente pas de difficultés, merci d'avance pour
votre


aide.












Avatar
anonymousA
y'a eu comme un bug pour mon POST précédent. JE recommence

En premeir lieu, j'ai considéré que ton tableau est trié sur la colonne A

Ensuite le principe est simple: on parcourt depuis la dernière cellule de la
colonne A les cellules précédentes. Le programme a 2 étages, le 1er consiste
à déterminer le nombre de cellules de la colonne A en remontant du bas qui
ont la même valeur. Une fois qu'on en a déterminé le nombre grâce à la
variable mark, on va parcourir la plage des cellules identiques et on regarde
les cellules adjacentes pour vérifier si la cellule de la colonne B est
supérieure à celle de la colonne C.
Si c'est le cas, on supprime l'intégralité des lignes correspondantes. Puis
on passe au groupe de cellules suivantes toujours en remontant et on
recommence la même manip qu'expliquée précedemment.

A+






Peux tu STP me donner un peu le principe de ton code, car quand je le lance,
je n'obtiens pas le bon résultat. Je n'ai plus aucune ligne dans le fichier



"anonymousA" a écrit dans le message
news:
bonjour,

j'ai supposé que ta première colonne était la colonne A. Ai fait les
essais

sur cette base.

derligne = [A65536].End(xlUp).Row

Set premcell = Cells(derligne, 1)

Do While premcell.Row > 1

Set othercell = premcell

Do While othercell.Value = premcell.Value
mark = mark + 1
On Error Resume Next
Set othercell = othercell.Offset(-1, 0)
If Err.Number <> 0 Then Exit Do
Loop

If Err.Number = 0 Then Set tampcell = premcell.Offset(-mark, 0)

For I = 1 To mark
If premcell.Offset(1 - I, 1).Value > premcell.Offset(1 - I,
2).Value

Then
Range(premcell.Offset(1 - mark, 0), premcell.Offset(0,
2)).EntireRow.Delete

Exit For
End If
Next

mark = 0

If Err.Number <> 0 Then Exit Sub
Set premcell = tampcell

Loop

A+


Bonjour, je tourne en rond pour effectuer par VBA la chose suivante

J'ai un tableau excel qui contient 3 colonnes

2 7 10
2 4 20
2 10 10
3 1 20
3 5 0
4 6 30
4 1 5
5 1 0
5 4 30

La première colonne correspond à un N° d'adresse, la seconde et la
troisième


à une quantité

Mon problème est que je dois supprimer toutes les lignes d'une même
adresse


si on moins une des quantités de la colonne 2 est supérieure à la
quantité


de la colonne 3

Ex :
Chaque ligne de l'adresse 2 possède dans la colonne 2 une quantité <= à
celle de la colonne 3 ------> je conserve l'adresse 2
L'adresse 3 possède au moins 1 ligne (3 5 0) dont la quantité de la
colonne


2 est > à celle de la colonne 3 ------> je dois supprimer toutes les
lignes


ayant l'adresse 3
Et ainsi de suite

Dans mon exemple, au final je dois avoir toutes les lignes des adresses
2 et


4 et avoir supprimé toutes les lignes des adresses 3 et 5

Si pour vous cela ne présente pas de difficultés, merci d'avance pour
votre


aide.