Comparer 2 cellules et supprimer en une : VBA

Fermé
Nours85 - 16 juil. 2008 à 08:48
 Nours85 - 17 juil. 2008 à 11:19
Bonjour,

Il y a très longtemps que je n’ai pas fait de vba et là j’en ai besoin.
Voilà mon problème : j’ai un fichier excel qui contient deux types de données sur la feuille 1. la partie de gauche (des colonnes A à C) correspond aux ventes de la journée et la partie droite (des colonnes F à H) aux stocks.
J’aimerais créer un macro qui me supprimerais automatiquement les produits vendus des stocks. Je ne sais pas si je suis très clair.
J’ai déjà essayer de créer un macro, celui-ci fonctionne quand je change manuellement les steps mais pas en automatique.

Sub NA()


For i =4 To 41 Step 1

If Cells(i, 1) <> Cells(i, 6) Then
Cells(i, 6).Delete
Cells(i, 7).Delete
Cells(i, 8).Delete
End If
Next i
End Sub


J’aimerais comparer la cellule (A ; 1) avec la cellule (F ; 1) si elles sont identiques alors on passe à la cellule (A ; 2) avec la cellule (F ; 2). Si elles sont différentes alors on supprime les cellules ( F ; G ; H ; 2).
Je travaille sur des fichiers contenant 3000 lignes. Je m'exerce actuellement sur un petit fichier de 40 lignes, j'amerais bien vous donner un exemple avec un fichier Excel mais je sais pas comment faire.

Merci de me conseiller ou si vous avez la solution, je suis preneur.
A voir également:

2 réponses

For i =4 To 41

If Cells(i, 1).value <> Cells(i, 6).value Then
Cells(i, 6).value=""
Cells(i, 7).value=""
Cells(i, 8).value=""
End If
Next i

ca devrai fonctionner comme ceci
0
bonjour,

Merci pour votre réponse très rapide.
Votre programme fonctionne mais pas tout a fait comme je le souhaite.
votre programme supprime les cellules comme prévu mais moi j'aimerais que ça les supprime vers le haut (que ça remonte les cellules du dessous, comme quand on fait clique droit supprimer ver le haut).
ça permetterait d'avoir correspondances entre la cellule (A;18) et (F; 18).
car là ça me supprime tous les produits du stocks dès que le programme trouve une différence entre cellule. JE voudrais que ça supprime juste le produit vendu.

dite moi comment je peux vous envoyer un fichier excel comme ça vous pourrez voir comment ça se présente.
Je pense que je ne dois aps être très clair dans mes explication, je suis désolé.

Encore merci
0
vautour88 > Nours85
16 juil. 2008 à 09:16
Stocker le fichier excel sur un ftp.
sinon je ne comprend pas tres bien ce aue vous voulez faire. Faite moi si vous savez un simple scheme du style.
article | nom | ...
et ce que ca devrai donner
.... | ... | ...
0
Nours85 > vautour88
16 juil. 2008 à 09:29
Désolé mais c’est pas évident à expliquer, je vous remercie quand même de vous intéresser à mon problème.
Voilà un schéma simple de mon fichier. (A ;C) stocks au jour J et (F ;H) stock au jour J-1

A B C
Article / Catégorie / Poids
1 cat1 2.35
1 cat1 2.36
2 cat3 2.40
4 cat1 2.35
6 cat1 2.35

F G H
Article / Catégorie / Poids
1 cat1 2.35
1 cat1 2.36
2 cat3 2.40
3 cat2 2.38
3 cat1 2.35
4 cat1 2.35
5 cat1 2.35
5 cat1 2.35
6 cat1 2.35

j’aimerais donc comparer (A ;1) avec (F ;1) : si identique passer à la ligne suivante, si différente supprimer vers le haut (F ;G ; H ; 1) et comparer à nouveau (A ;1) avec la nouvelle valeur de (F :1).
Dans l’exemple, il faudrait supprimer les cellules (F ;G ; H ; 4) ; (F ;G ; H ; 5) ; (F ;G ; H ; 7) ; (F ;G ; H ; 8) ; correspondant aux produits 3 et 5 vendus et donc plus en stocks.

A la fin je souhaite avoir un le stock au jour J = au stock au jours J-1.

A B C
Article / Catégorie / Poids
1 cat1 2.35
1 cat1 2.36
2 cat3 2.40
4 cat1 2.35
6 cat1 2.35

F G H
Article / Catégorie / Poids
1 cat1 2.35
1 cat1 2.36
2 cat3 2.40
4 cat1 2.35
6 cat1 2.35

Désolé si j’explique mal mon problème.


Merci
0
vautour88 > Nours85
16 juil. 2008 à 09:46
For i =4 To 41
If Cells(i, 1).value <> Cells(i, 6).value Then
Cells(i, 6).value=""
Cells(i, 7).value=""
Cells(i, 8).value=""
For a =i To 41
Cells(a, 6).value=Cells(a+1, 6).value
Cells(a, 7).value=Cells(a+1, 7).value
Cells(a, 8).value=Cells(a+1, 8).value
next a
End If
Next i

essaye avec ca, si j ai bien compri ca devrai fonctionner, et t inquiete pas je suis juste un etudiant qui s ennuye au bureau pendant son job d ete ...
0
Nours85 > vautour88
16 juil. 2008 à 10:30
merci mais ça ne fonctionne toujours pas comme je veux.
ça supprime bien des cellules mais il reste des cellules qui ne devraient plus être là. J'ai remplacé Cells(i, 6).value="" par Cells(i, 6).Delete , ça marche mais que quand je change manuellement le for i=4 to 16 puis to 17 puis to 20 ...
je ne sais pas mettre un fichier sur ftp,désolé.

je pense qu'il n'y a pas de solution à mon problème.

si tu as d'autres pistes (pour t'occuper, je ne voudrais pas que tu t'ennui au boulot) merci.
0
Merci pour ces conseils.
Le problème est enfin résolu avec une boucle While :

Sub ComparerSupprimer()

Dim j As Integer

j = Cells(1, 1).Value
While j < Cells(2, 1).Value
If Cells(j, 1).Value <> Cells(j, 12).Value And Cells(j, 12).Value <> "" Then
Cells(j, 12).Delete
Cells(j, 13).Delete
Cells(j, 14).Delete
Cells(j, 15).Delete
Cells(j, 16).Delete
Cells(j, 17).Delete
Cells(j, 18).Delete
Cells(j, 19).Delete
Cells(j, 20).Delete
Cells(j, 21).Delete
Cells(j, 22).Delete
j = j - 1
limit = limit - 1
End If
j = j + 1
Wend

End Sub

Merci
0