Macro oublie des cellules [Résolu]

Macro oublie des cellules [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 23-04-2010 à 10:02:39    

Bonjour !!
 
J'ai créé une macro qui semble fonctionnée mais lorsque je lance cette derniére, elle oublie des cellules en cour de route, comme si le PC allait trop vite pour la macro lol.
voici la macro :

Code :
  1. Sub Test()
  2. Range("B1:B6" ).Select
  3. For Each c In Selection
  4. If Sheets("Feuil2" ).Range("A1:A12" ).Find(what:=c) Is Nothing Then
  5. Rows(c.Row).Delete Shift:=xlShiftUp
  6. Else
  7. End If
  8. Next c
  9. End Sub


 
Je souhaite donc que pour chaque ligne dans ma premiére feuille elle verifie si la valeur dans une colonne est présente dans une autre colonne d'une autre feuille (qui représente la limite de données à traiter), cela me permet de faire un tri dans mes données de base.
Donc dés qur la valeur n'est pas trouvée dans la feuille 2 la macro supprime la ligne complétement sans laisser de vide.
 
Mais je suis obliger de relancer plusieurs fois la macro pour que cela fonctionne completement.  
La macro traite quelques lignes au hazard, certaines ne sont pas traitée.
 
Je trouve ça vraiment étrange. La macro n'aime peut être pas que je supprime les ligne au fur et à mesure.
 
J'attend vos idées avec impatience ^^


Message édité par GohanSSj2 le 03-05-2010 à 13:54:00
Reply

Marsh Posté le 23-04-2010 à 10:02:39   

Reply

Marsh Posté le 23-04-2010 à 10:13:20    

Bon j'ai trouver un début de réponse:
c'est que ma macro supprime une ligne alors quelle va ensuite vérifier la suivante, donc en faite comme els ligne se décal au fur et a mesure, on saute une ligne à chaque fois que ma condition est vrai !!
 
Je cherche un code prenant en compte cette condition.
(lol à chaque fois je me répond tout seul sur ce forum :D comme je cherche en meme temps parfois (au bout de 30 min) je trouve enfin une petite réponse)

Reply

Marsh Posté le 23-04-2010 à 10:23:12    

c'est bon j'ai enfin trouvé et adapté !!!
 
voila le code:

Code :
  1. sub test()
  2. For I = Range("B1:B16" ).Cells.Count To 1 Step -1
  3. If Sheets("Feuil2" ).Range("A1:A12" ).Find(what:=Range("B1:B16" ).Cells(I).Value) Is Nothing Then
  4. Range("B1:B16" ).Cells(I).EntireRow.Delete
  5. Else
  6. End If
  7. Next
  8. End Sub


 
Merci à ce forum pour votre source d'inspiration et de bon sens :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed