Explication de macro

Résolu
Napalawow Messages postés 38 Statut Membre -  
zavenger Messages postés 817 Statut Membre -
Bonjour,

Etant débutant (toutefois ayant de très légère base en macro) j'aimerai qu'on puisse cette macro qui pourrai m'intéresse et d'y voir plus clair pour cette macre et pour les autres macro de ce genre merci

MACRO :
Sub supprime()
Dim lig As Double
For lig = Cells(65536, 1).End(xlUp).Row To 1 Step -1
    Select Case Cells(lig, 1).Value
        Case "CCCCC", "FFFFF"
            Rows(lig).Delete
    End Select
Next lig
End Sub


Action de la macro : LOrsque une case de la colonne "A" contient CCCCC ou FFFFF, la macro supprime la ligne respective de la case contenant CCCCC ou FFFFF. J'aimerai apporter quelque modification comme : Changer la colonne c'est-à-dire que se ne soit pas la colonne "A" mais "J" (par exemple)
Le type de la variable "lig" est un "Double" => Qu'est ce que c'est un "Double" ? lol
Une dernière chose pour cette macro :
For lig = Cells(65536, 1).End(xlUp).Row To 1 Step -1

Pourquoi ne met on pas plutot=> Cells(1, 65536) <= et End(xlUp).Row ca ve dire supprimer non?
Et que veut dire Step-1 ?

MErci d'avance d'avoir prit sur votre temps pour m'expliquer cette macro type.

JD
+
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. zavenger Messages postés 817 Statut Membre 161
     
    Bonjour,

    Changer la colonne c'est-à-dire que se ne soit pas la colonne "A" mais "J" (par exemple)
    c'est le 1 de Select Case Cells(lig, 1).Valuequi donne le numero de colonne (1 donc A)

    Le type de la variable "lig" est un "Double" => Qu'est ce que c'est un "Double" ?
    Double est un type de nombre qui va te permettre de stocker un nombre codé sur 2 mots = 4 octets : de 0 à 2000000000 a peut pres. Cela me semble d'ailleur assez excessif pour un nombre de ligne dans une feuille. Mais bonqui peux le + peux le -

    lig = Cells(65536, 1).End(xlUp).Row
    est un moyen de calculer le nomero de ligne de la derniere ligne de la feuille. En fait on simule la sequnce de touche <shitf><End> au clavier et on lit le numero de ligne (row) de la cellule obtenue.

    Step -1
    veut dire que l'on va decrementer de 1 la valeure de la varaible de boucle (lig en l'occurence)

    En fait la macro balaye la feuille en partant de la derniere ligne en remontant vers la premiere

    Si tu as d'autres questions ...

    @+
    0
  2. Napalawow Messages postés 38 Statut Membre 1
     
    Merci zavenger pour les renseignements qui me permettent de voir plus clair

    Si je veut changer de colonne par exemple pour exécuter la macro sur la colonne B a la place de A je met :
    Select Case Cells(lig, 2).Value
    C'est trés embêtant car lorsque que j'ai essayé cette modification ça ne fonctionne pas.

    De plus
    lig = Cells(65536, 1).End(xlUp).Row 
    

    lig = Cells(65536, 1) veut dire que lig prend pour valeur de 65536 à 1 ?
    et End(xlUp).Row permet à la macro de connaitre à quelle ligne appartient la case

    PS : Si tu sais pourquoi ca ne fonctionne pas quand je met Select Case Cells(lig, 2).Value pour la colonne B ca m'arrangerai bcp. VOILA . MERCI beacoup!

    JD
    0
    1. zavenger Messages postés 817 Statut Membre 161
       
      Je ne sais pas pourquoi cela ne marche pas (d'autant plus que je ne sais ce qui ne marche pas ;-) )

      deja , moi je remplacerais
      lig = Cells(65536, 1).End(xlUp).Row
      par
      lig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row (Cela utilise les proprietes de la derniere cellule de la feuille)

      Et puis si tu me donnes les symptomes du "ca ne marche pas" je pourrai peut etre t'aider
      0
  3. Napalawow Messages postés 38 Statut Membre 1
     
    OK SUPER GENIAL MAGE cool (lol) ton code
    lig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

    marche à merveille !!!!!!

    Sub supprime()
    Dim lig As Double
    For lig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
        Select Case Cells(lig, 3).Value
            Case "CCCCC", "FFFFF"
                Rows(lig).Delete
        End Select
    Next lig
    End Sub
    


    Je t'en remercie vraiment je vais pouvoir maintenant utiliser cette macro et y apporter qques modification (en esperant d'y arriver ^^)
    Merci

    JD
    0
    1. zavenger Messages postés 817 Statut Membre 161
       
      de rien
      bonne programmatin
      0