cs_sterkasor
Messages postés53Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention11 juin 2007
-
13 oct. 2006 à 14:05
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
14 oct. 2006 à 15:48
Bonjour
jai un grand problem avec VBA depuis une semaine jessaye de corriger je narrive pas
mon probleme
jai deux feuilles excel une sappel "negatif" et lautre "liste_principal"
le code que je vais paster au dessous recherche les collons de la feuille "negatif" dans la feuille "liste_principal" il compare les enregistrements de la feuille "negatif" avec la feuille "liste_principal" et si une enregistrement de la feuille "negatif" nexiste pas dans la feuille "liste_principal" il ajout a la feuille "liste_principal"
ce que je veux cest le contraire
jai une liste de personnes avec leurs adresses disons 10.000 personnes est enregistres dans la feuille "liste_principal" et maintenant je veux supprimer certaines donc je creer une autre feuille qui sappel "negatif" et je met les enregistrements que je veux supprimer de la liste_principal
le macro vas supprimer automatiquement mes enregistrements qui sont dans la feuille "liste_principal".
Private Sub cbtStart_Click()
Dim DerLigne As Long
Dim DerLigne2 As Long
Dim L1 As Long
Dim L2 As Long
Dim Reste As Long
Dim LongFrame As Long
Dim CalculProgression As Long
Dim MonMot As String
Dim MotCompare As String
Dim MotExiste As Boolean
For L2 = 2 To DerLigne2
MotCompare = Cells(L2, 1).Text
If MotCompare = MonMot Then
MotExiste = False
Exit For
End If
Next L2
If MotExiste = False Then
Sheets("liste_principal").Select
Range(Cells(L1, 1), Cells(L1, 11)).Copy
Sheets("negatif").Select
Range("A" & DerLigne2 + 1).Select
ActiveSheet.Paste
End If
Next L1
Application.ScreenUpdating = False
MsgBox "Operation termine avec succes !"
Unload Me
End Sub
Private Sub Image1_Click()
End Sub
Private Sub UserForm_Click()
End Sub
Ce code fait le contraire est ce que quelqun poura maider
je connais rien en VBA
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 14 oct. 2006 à 14:40
Comme je t'ai dit, ce bout de code ne gère pas la progression (LabelProgress)
Crée une nouvelle Procédure, disons
Sub NettoyageListePrincipale()
'intègre le code que je t'ai donné
End sub
Le principe du code est de lire chaque ligne de negatif et de
rechercher (Find) la valeur en A dans la colonne A (A:A à modifier au
besoin) de la feuille liste_principal. Si la valeur est trouvée, la
ligne de liste_principal est effacée et on continue de lire la feuille
negatif.
J'ai essayé de te donner un code au plus simple pour t'aider à mieux
comprendre. Si j'y mets trop de détails, tu vas te perdre et
copier/coller sans rien comprendre... ce qui n'est pas le but. Une fois
que tu auras saisi le code, il sera toujours temps d'y rajouter des
fioritures comme la progression.
Si ça ne fait pas ton bonheur, tu fermes le classeur et tu ne sauvegardes pas
Et s'il y a quelque chose que tu ne comprends pas au bout de code, tu demandes.
cs_sterkasor
Messages postés53Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention11 juin 2007 14 oct. 2006 à 14:58
Je lai fais comme tu vois au dessous:
Private Sub cbtStart_Click()
Dim DerLigne As Long
Dim DerLigne2 As Long
Dim L1 As Long
Dim L2 As Long
Dim Reste As Long
Dim LongFrame As Long
Dim CalculProgression As Long
Dim MonMot As String
Dim MotCompare As String
Dim MotExiste As Boolean
Dim I As Long, nbLignes As Long
Dim Recherche, Valeur
'Activer la feuille "negatif" et calculer son nombre de lignes
Sheets("negatif").Activate
nbLignes = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
'on passe chaque ligne
For I = 1 To nbLignes
Valeur = Sheets("negatif").Range("A" & I) 'à modifier
'On recherche dans la colonne A de la feuille "liste_principal"
'changer A:A pour la colonne à rechercher
Set Recherche = Sheets("liste_principal").Columns("A:A").Find(Valeur)
If Not Recherche Is Nothing Then 'Trouvé
Sheets("liste_principal").Rows(Range(Recherche.Address).Row).Delete
End If
Next
Application.ScreenUpdating = False
MsgBox "Termine avec succes !"
Unload Me
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 14 oct. 2006 à 15:48
Good, il te resterait donc à intégrer la progression de ton Label et faire du ménage dans tes variables qui ne servent pas.
Comme la boucle For...Next est gourmande au niveau du processeur, on ne
peut pas simplement dire Label.Width=XYZ, il faut aussi mettre DoEvents
qui passera la main au système et permettra l'affichage raffraîchi du
Label.
Private Sub cbtStart_Click()
Dim I As Long, nbLignes As Long
Dim Recherche, Valeur
Dim Ratio as Integer
'Activer la feuille "negatif" et calculer son nombre de lignes