Erreur compilation VBA

Bonsoir le forum,

J'ai un tableau comportant 1 colonne "classement", 1 colonne "nom", 1 colonne "points" reproduites 2 fois.

je souhaite par macro effacer les cellules de la colonne "classement" dont les cellules adjacentes "nom" sont vides.

Ci dessous le code que j'essaie d'appliquer . Message : Erreur de compilation "End If sans bloc If"

Cellules de la colonne H (8) à effacer et 2ième test à faire sur colonne B (2) si peu de candidats.

Merci pour l'éventuelle correction.

Cordialement

Sub macro3()

Dim i As Integer

Dim Supcell As Integer

Sheets("Classement Scratch").Select

For i = Supcell To 1 Step -1

Range("h24").Select

If ActiveCell.Value = "" Then _

ActiveCell.Offset(0, -1).ClearContents

End If

Next i

End Sub

Bonsoir mounny,

il y a un caractère souligné en trop au bout de ta ligne If.

en fait, soit tu enlèves le souligné et tu laisses le End If

soit tu laisses le souligné et tu enlèves le End If.

dhany

Bonsoir dhany,

Merci pour cette réponse rapide, j'ai essayé les 2 solutions, je n'ai plus le message d'erreur mais rien ne se passe.

ci-dessus, je t'ai aidé seulement pour résoudre ton erreur de compilation ; mais :

1) tu utilises la variable SupCell dans For i = Supcell To 1 Step -1 alors que tu ne l'as pas initialisée.

2) c'est pour une suppression de lignes qu'on doit faire le job du bas vers le haut ; inutile pour un effacement.

donc tu peux faire : For i = 1 To Supcell

3) pourquoi chercher à utiliser H24 seulement si c'est pour toute une colonne ?


pour t'aider davantage, il faudrait ton classeur (sans données confidentielles) ; pour cela, tu peux utiliser le bouton « Ajouter des fichiers » qui est situé juste sous la fenêtre d'édition de ton post.

dhany

dhany,

Je reviens vers toi avec le fichier en pièce jointe.

Merci pour ta persévérence à m'aider.

je travaille sur ton fichier ; ça va me prendre pas mal de temps.

dhany

je te retourne ton fichier modifié :

pour pouvoir faire une démo valable, j'ai effacé quelques noms en colonne C

tu devras bien sûr les remettre, en les regardant sur ton fichier initial !

Ctrl e ➯ travail effectué pour les colonnes B et G

Alt F11 pour voir le code VBA, puis revenir sur Excel

à te lire pour avoir ton avis.

dhany

Bonjour dhany,

Super, cela fonctionne,

Peux tu en "bon français" me traduire ces quelques lignes de code, j'ai besoin de les reproduire sur plusieurs onglets. Cela me permettra de savoir où apporter les modifs.

Un grand Merci

Bonjour mounny,

bien qu'avec beaucoup de retard, voici l'explication demandée :


1) Sub Essai()

Application.ScreenUpdating = 0 :

désactive la mise à jour de l'écran ➯ ça accélère la macro

Job 2 : ça appelle la sub Job() avec le paramètre 2

Job 7 : ça appelle la sub Job() avec le paramètre 7

en fait, le paramètre est ici le n° de la colonne "Clt" (Classement) :

2 = colonne B ; 7 = colonne G


2) Sub Job(col As Byte)

elle reçoit dans col la valeur de la colonne : 2 ou 7

Dim dlig&, lig& : idem que Dim dlig As Long, lig As Long :

dlig et lig sont 2 variables entières de type Long

dlig = Cells(Rows.Count, col).End(3).Row :

.End(3) : idem que .End(xlUp) ; dernière ligne, selon colonne col

c'est donc la dernière ligne utilisée de la colonne "Clt"

For lig = 5 To dlig .. Next lig :

boucle For, de la ligne n° 5 à la dernière ligne dlig

c'est ça qui va faire le travail pour toutes les lignes

(même si tu ajoutes d'autres lignes)

With Cells(lig, col) .. End With :

ça référence la cellule qui est à l'intersection de la ligne lig, colonne col

donc chaque cellule de la colonne B ou G, selon col

If IsEmpty(.Offset(, 1)) :

.Offset(, 1) : par rapport à la cellule référencée par le With :

c'est la cellule qui est sur la même ligne, 1 colonne à droite

cellule de la même ligne, colonne "NOM Prénom"

si cette cellule est vide :

Then .ClearContents :

alors effacer la cellule référencée par le With


si besoin, n'hésite pas à demander plus d'infos.

bonne chance pour tes modifs !

dhany

Bonsoir dhany,

Impeccable la traduction détaillée de ce bout de code.

Mille mercis.

bonsoir mounny,

j'suis ravi qu'mon explication détaillée te plaise !

merci pour ton retour, et bonne continuation !

dhany

Rechercher des sujets similaires à "erreur compilation vba"