Explication de macro

Résolu/Fermé
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 - 8 mai 2008 à 16:10
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 - 8 mai 2008 à 21:47
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
+
A voir également:

3 réponses

zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
8 mai 2008 à 16:26
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
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
8 mai 2008 à 17:22
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
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
8 mai 2008 à 19:40
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
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
8 mai 2008 à 20:40
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
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
8 mai 2008 à 21:47
de rien
bonne programmatin
0