VBA problème de macro sur excel

Résolu
doudouloeb Messages postés 10 Statut Membre -  
doudouloeb Messages postés 10 Statut Membre -
Bonjour,

Je suis entrain de faire une macro qui permet la suppression de lignes en fonction de données d'une colonne.

J'ai fait une première macro mais sur la deuxième partie, j'ai l'impression d'avoir fait un boucle infinie car la macro ne s'arrête jamais.

Voilà la macro :

Sub AAA()

Dim i As Integer
Dim u As Integer

"première suppression"

For i = 1 To Range("G65536").End(xlUp).Row
If Cells(i, 7) <> ed Then
Rows(i).Delete
i = i - 1
End If
Next i

"seconde suppression"

For u = 1 To Range("C65536").End(xlUp).Row
If Cells(u, 3).Value <> 581 Then
Rows(u).Delete
u = u - 1
End If
Next u

End Sub

Voilà si quelqu'un a déja fait ce genre de macro, pouvez vous m'aider, je débute dans les macros

Merci
Configuration: Windows XP
Internet Explorer 7.0

13 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Lorsque tu supprime des lignes il est préférable de procéder à l'envers, car la suppression change le nombre existant :

    For u = Range("C65536").End(xlUp).Row To 1 step -1
    If Cells(u, 3).Value <> 581 Then Rows(u).Delete
    Next u
    0
  2. doudouloeb Messages postés 10 Statut Membre
     
    Salut,

    Jte remercie ça marche nickel, mais je voudrais faire arêter la suppression avant la ligne 4, Comment puis-je faire ?

    Sub Nettoyage()

    Dim u As Integer
    Dim i As Integer

    ' Première suppression

    For u = Range("P65536").End(xlUp).Row To 1 Step -1
    If Cells(u, 16) <> Empty Then Rows(u).Delete
    Next u

    'Seconde suppression

    For i = Range("B65536").End(xlUp).Row To 1 Step -1
    If Cells(i, 2) <> "58411" Then Rows(i).Delete
    Next i

    End Sub

    Sinon une autre petite question si pour la seconde suppression je veux supprimer toutes les lignes sauf celles qui comporte "58411" et "58412", Comment puis-je faire avec un or ou and... etc??

    Merci d'avance

    Doudou
    0
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    je voudrais faire arêter la suppression avant la ligne 4

    For u = Range("P65536").End(xlUp).Row To 4 Step -1 
    For i = Range("B65536").End(xlUp).Row To 4 Step -1 

    Lorsque tu utilises une boucle avec for / next, tu commence et tu finis à la valeur que tu choisis.

    Sinon une autre petite question si pour la seconde suppression je veux supprimer toutes les lignes sauf celles qui comporte "58411" et "58412", Comment puis-je faire avec un or ou and... etc??

    If Cells(i, 2) <> "58411" And Cells(i, 2) <> "58412" Then Rows(i).Delete 

    0
  4. doudouloeb Messages postés 10 Statut Membre
     
    Salut,

    Merci, cela marçhe nickel.

    Je voudrais savoir,

    j'ai dans une colonne d'un workbook (n°1) des noms que je voudrais comparer avec les données d'autres colonnes dans un autre workbook (n°2),

    si je trouve le même nom dans cette plage

    je voudrais copier la ligne où j'ai trouver le même nom et la coller dans mon autre workbook (n°1).

    Voilà je sais pas si tu sais faire cela où du moin si tu a des idées pour faire ça,

    Je suis un peu perdu

    Merci bien tjs zen
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    C'est tout à fait possible, j'ai un classeur avec une macro qui fait cela, je le cherche et je te donnes les éléments.

    0
  7. doudouloeb Messages postés 10 Statut Membre
     
    Merci, je l'attends avec impatience

    Doudou
    0
  8. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Quelques questions supplémentaires tout de même.

    je voudrais copier la ligne où j'ai trouver le même nom et la coller dans mon autre workbook (n°1).

    Tu copie toute la ligne, qui n'a pas la même structure ou simplement certaines colonnes ?

    La ligne copiée se place à la suite du nom trouvé ou en fin ?
    0
  9. doudouloeb Messages postés 10 Statut Membre
     
    En fait, certaines cellules de cette ligne, les 5 premières cellules exactement.

    J'essayé en utilisant la fonction RECHERCHEV dans excel mais ça ne fonctionne pas.

    DouDou
    0
  10. doudouloeb Messages postés 10 Statut Membre
     
    Je sais pas si j'ai été très clair donc je t'envoi avec un tableau exemple.

    Voilà j'ai des "N° de Réf" dans ma première colonne, je souhaite les recherher dans les colonnes (N°AP1, N°AP2,N°AP3) du deuxième tableau et copier "l'adresse", "le cp", "la ville" de la ligne où je le retrouve , à coté de mon "N° de Réf".

    N° Ref Adress CP ville N°AP 1 N° AP 2 N° AP 3

    12rd ffgfdgf 78520 PARIS 56ok 57ok
    58tg gfgfdg 56288 LYON 12rd 14rd 15rd
    56ok yuyi 45000 etc.. 18un
    18un ikliuyuy etc… ag15 ag18
    ag15 u,uy,yu 58tg
    ag18 ,,uyil ud10
    14rd ioiur
    15rd tyutyuy
    57ok tyuyui
    ud10 iiuyu
    etc... gfdgfdtt
    reytrrytr
    uiuyuyi
    etc..

    Voilà je sais pas si je suis clair mais si ty arrive tu me sauverai la vie.

    Merci
    0
  11. doudouloeb Messages postés 10 Statut Membre
     
    J'ai déja fait çà mais ça ne marche pas :

    Sub essai()

    Dim Plage As Range, c As Range
    Dim u As Integer
    Set Plage = Range("AA:AV")

    For u = Range("G65536").End(xlUp).Row To 5 Step -1
    V1 = Cells(u, 7)
    For Each c In Plage
    If c = V1 Then
    Cells("AA,c:Af,c").Select
    Selection.Copy
    Cells(u, 1).Select
    ActiveCell.Paste
    End If
    Next c
    Next u

    End Sub
    0
  12. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Voilà j'ai des "N° de Réf" dans ma première colonne, je souhaite les recherher dans les colonnes (N°AP1, N°AP2,N°AP3) du deuxième tableau et copier "l'adresse", "le cp", "la ville" de la ligne où je le retrouve , à coté de mon "N° de Réf".


    et si tu trouves plusieurs fois la référence, la dernière trouvée est la bonne ?
    0
  13. doudouloeb Messages postés 10 Statut Membre
     
    Salut j'ai réussi à faire un autre programme, il ne marche pas à cause du For u = Range("F65536").End(xlUp).Row To 5 Step -1, par contre il marche quand je mets For u = 5 To 1000,

    mais moi je ne veux pas ca, je veux qui s'arrête quand il n'y a plus de n° de ref.

    Voilà la macro:

    Sub ed ()

    Dim r As Integer
    Dim t As Integer

    For r = 5 To 1000
    variable1 = Cells(r, 7)

    For t = 5 To 1000
    variable2 = Cells(t, 32)
    variable3 = Cells(t, 33)
    variable4 = Cells(t, 34)
    variable5 = Cells(t, 35)
    variable6 = Cells(t, 36)
    variable7 = Cells(t, 37)
    variable8 = Cells(t, 38)
    variable9 = Cells(t, 39)
    variable10 = Cells(t, 40)
    variable11 = Cells(t, 41)
    variable12 = Cells(t, 42)
    variable13 = Cells(t, 43)
    variable14 = Cells(t, 44)
    variable15 = Cells(t, 45)
    variable16 = Cells(t, 46)
    variable17 = Cells(t, 47)
    If variable1 = variable2 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable3 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable4 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable5 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable6 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable7 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable8 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable9 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable10 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable11 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable12 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable13 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable14 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable15 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable16 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    ElseIf variable1 = variable17 Then
    Range("AA" & t & ":AF" & t).Select
    Selection.Copy
    Range("A" & r & ":F" & r).Select
    ActiveSheet.Paste
    End If
    Next t

    Next r

    End sub ()
    0