maccro efface

al1000

XLDnaute Impliqué
Bonjour,

j'ai dans la colonne "A" des noms et dans la colonne "B" soit 0 ou 1 en fonction du résultat de la formule.


Je recherche une macro quand je la lance par un bouton:

======== elle efface les noms dans la colonne "A"

Merci de votre aide

A+
 

JCGL

XLDnaute Barbatruc
Re : maccro efface

Bonjour à tous,

Ceci dit, dans le :
Code:
Option Explicit
Dim i As Integer
Dim cel As Range
 
Sub Del()
Application.ScreenUpdating = False
 
  For i = 4 To Range("A65536").End(xlUp).Row
    If Cells(i, 2) = 1 Then Cells(i, 1).ClearContents
Next
End Sub
peux-tu m'expliquer l'intérêt de "Dim cel as Range" ?

J'avais commencé un code avec un For Each cel.... mais j'ai préféré faire une boucle et j'ai oublié de supprimer cette déclaration.

A+
 

al1000

XLDnaute Impliqué
Re : maccro efface

bonsoir


comment modifier la macro afin d'avoir le chiffre 1 ou 0 dans la colonne f et les noms dans la colonne C?

pourquoi avoir cela en debut de la macro?
Option Explicit
Dim i As Integer
Dim cel As Range
A+
 

fanfan38

XLDnaute Barbatruc
Re : maccro efface

Bonjour,
Sub Del()
Dim i As Integer 'declaration de la variable
Application.ScreenUpdating = False
For i = 4 To Range("A65536").End(xlUp).Row
cells(i,6).value=cells(i,2).value
cells(i,3).value=cells(i,1).value
If Cells(i, 2) = 1 Then Cells(i, 1).ClearContents
Next
End Sub

A+ François
 

JCGL

XLDnaute Barbatruc
Re : maccro efface

Bonjour à tous,*
Salut Fanfan,

J'ai compris différemment

Remplace le code de la Sub Del() par :

Code:
Option Explicit
Dim i As Integer
Sub Del()
Application.ScreenUpdating = False
For i = 4 To Range("C65536").End(xlUp).Row
    If Cells(i, 6) = 1 Then Cells(i, 3).ClearContents
Next
End Sub

Option Explicit : Oblige à Déclarer les Variables

Dim i As Integer : valeur est comprise entre -32 768 et 32 767

Sub Del()
Application.ScreenUpdating = False : Masque les actions à l'écran

For i = 4 To Range("C65536").End(xlUp).Row : de la ligne 4 à la dernière cellulle non vide de la colonne C

If Cells(i, 6) = 1 Then Cells(i, 3).ClearContents : Si F4 = 1 alors effacer C4 (Cells (4,6) = cellule de la ligne 4 et de la colonne 6 donc F4

Next : ligne suivante
End Sub

A+

Edition : Salut Lii, deux explications valent mieux qu'une dépose de code sans commentaires A++
 
Dernière édition:

Lii

XLDnaute Impliqué
Re : maccro efface

Bonjour,

Si JCGL le permet, puisque c'est fait ...

Il est conseillé de déclarer ses variables : on repère plus facilement des
erreurs qui leur sont dues quand il y en a.
On peut rendre cela obligatoire : dans l'éditeur, Outils, Options et cocher "Déclaration des variables obligatoire".
Cela provoquera l'affichage dans chaque module de l'expression "Option Explicit"

J'ai pris aussi l'habitude de mettre la lettre ou l'initiale d'une variable en majuscule : on repère plus facilement des erreurs qui leur sont dues lors de la compilation automatique.

Autre interprétation de ta demande : les 0 et 1 sont déjà en colonne F et les noms en colonne C.
Code:
Sub Del()
Dim I As Integer 'si le nombre de lignes est inférieur à 32467, si plus choisir LongApplication.ScreenUpdating = False
  For I = 4 To Range("F65536").End(xlUp).Row
    If Range("F" & I) = 1 Then Range("C" & I).ClearContents
  Next
End Sub

Remarque : Range("F" & I) peut être remplacé par Cells(I,6) la colonne F étant la sixième (ordre alphabétique).
 

Statistiques des forums

Discussions
313 770
Messages
2 102 235
Membres
108 181
dernier inscrit
Chr1sD