Parcourir les colonnes dans une macro excel

Fermé
Spozithau - 9 févr. 2015 à 12:43
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 9 févr. 2015 à 14:17
Bonjour,

Je souhaites réaliser une macro sous excel mais je suis vraiment novice en la matière et j'ai donc des petits problèmes.

J'ai fait le code suivant en l adaptant d'un code trouvé sur internet qui marche bien :

Sub Macro2()

Dim i As Integer
With ThisWorkbook.Sheets("Feuil2")

For i = 5 To 414
If Range("BC" & i).Value = "X" Then
Range("S" & i).ClearContents
Range("AM" & i).ClearContents
End If
Next i
End With
End Sub

Seulement je souhaiterais maintenant que cette macro s'applique a toutes les colonnes de BC à BQ (et non plus seulement sur BC) en plus de le faire sur toutes les lignes. De plus les action qui s'effectuent dans la boucle if doivent se faire sur des colonne situées respectivement 36 et 16 colonnes en amont de celle qui est en train d'être traitée (d'où le S et le AM dans les range). Avez-vous des conseils ou astuces pour réaliser cette macro ?

Merci du temps que vous me consacrez.

2 réponses

Bonjour

Ton With sert a quoi
mettre Cells a la place de range
et dans les autre colonne tu efface quoi ??
A+
Maurice
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
9 févr. 2015 à 13:54
End with ferme le bloc de With ThisWorkbook.Sheets("Feuil2") !!!
mais les "range" de feuil2 dans le bloc doivent alors précéder d'un point

.Range("S" & i)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
9 févr. 2015 à 14:17
Bonjour

essaies ce code
Option Explicit
'------
Sub report_si()
Dim Lig As Integer, Col As Integer
Dim Nbre As Integer

Application.ScreenUpdating = False 'fige défilement de l'écran
With ThisWorkbook.Sheets(2)
For Col = 55 To 69 '(BC :BQ)
Nbre = Application.CountIf(.Columns(Col), "X")
Lig = 1 'ligne d'ent^te
If Nbre > 0 Then
Lig = .Columns(Col).Find("X", .Cells(Lig, Col), xlValues).Row
.Cells(Lig, Col - 36).ClearContents
.Cells(Lig, Col - 16).ClearContents
End If
Next
End With
End Sub


Si tu tu as plus de 1000 ou 2000 lignes , on pouura aller + vite: fais signe
0