Message d'erreur VBA "End if sans bloc if"

Bonjour tout le monde,

Je débute avec VBA (depuis hier) et j'ai très peu de notions de code.

Je veux réaliser une macro qui cherche les données texte écrites en rouge dans un tableau et qui les envoi dans un autre tableau au sein de la même feuille.

J'ai déjà réalisé un bout du code mais lorsque je veux l'exécuter , j'ai ce message d'erreur:

image

Hésitez pas à me dire si qlq chose ne va pas et à m'éclairer sur le message d'erreur.

Merci d'avance

Ci dessous mon code

image

Sub MAJ_Premium()

' Copier les valeurs en rouge présentent dans les tableauyx 1,2 et 3 dans le tableau "Premium" (=tableau avec éléments courants)

' Défini les variables et paramètres
Dim derniere_ligne As Integer
Dim i As Integer
Dim j As Integer
Dim l As Integer
Dim k As Integer
l = 2
derniere = Range("Recueil!A1" & i).End(xlDown).Row

' Boucles pour trouver les valeurs en rouge dans les tableaux + reporter dans tabl premium
For i = 2 To derniere

If Range("Recueil!A" & i).Font.ColorIndex = 3 Then
k = 52
For j = 1 To 11
Range("Recueil!" & j & i).Value = Range("Recueil!" & k & l) = Value
k = k + 1

l = l + 1


End If

End Sub

Bonjour,

Le message est trompeur, ce sont vos boucles For qui n'ont pas de Next pour marquer leur fin.

Autre chose, Range("Recueil!A" & i) s'écrit plutôt Sheets("Recueil").Range("A" & i). Je ne suis pas sûr de la validité de votre syntaxe actuelle...

Bonjour Pedro22,

Merci pour ta réponse

Je dois donc ajouter des "Next" a quels endroits ?

Bonjour Pedro22,

Merci pour ta réponse

Je dois donc ajouter des "Next" a quels endroits ?

Quand ta boucle se termine et que tu dois refaire un tour (ou sortir si le dernier tour de boucle est fait).

D'accord ! Merci, j'ai donc ajouté 2 "Next" et le message n'apparait plus.

Merci beaucoup !

J'ai maintenant (apparemment) une erreur dans le code que je ne sais pas solutionner…

image

Savez vous quelle est la source du problème ?

Edit: Il manque le then (?) mais pas que, et comment l'intégrer ?

A y regarder de plus près, le code est truffé d'incohérences, et il ne pourra fonctionner même en rectifiant l'erreur ci dessous. Le problème de la ligne surligné est que vous avez une double égalité dans la même ligne, mais aussi que les plages citées ne sont pas valides (exemple "Recueil!" & k & l équivaut à Recueil!522, qui n'est pas une cellule valide).

Peut-on avoir une explication sur l'objectif de cette macro (et idéalement un fichier type pour la tester) ?

Oui c'est pas étonnant je débute aha

Merci pour votre aide

Voila ci dessous un classeur exemple (j'ai supprimé les "postes" 2 et 3 pour la confidentialité).

Les explications sont dans le tableau.

10exemple-forum.xlsm (84.14 Ko)

Mon antivirus bloque le fichier. Dans les grandes lignes, il faut faire en sorte que les cellules soient indiquées selon le modèle suivant : Sheets("NomFeuille").Range("A1") ou Sheets("NomFeuille").Cells(1, 1). Il faut aussi rectifier la double égalité (A = B = C) qui n'a aucun sens en l'état. A mon avis, la variable k est inutile car elle équivaut à j + 51.

Bonjour Pedro22,

J'ai un peu modifié le code hier soir… le voici

image

Il n'y a plus de bug, la macro se met en marche et arrive jusqu'à la fin, mais le contenu des cellules deplacé n'est pas le bon (texte rouge) ni au bon endroit... peux-tu m'aider stp ?

Je mets le fichier ci-dessous

Merci d'avance

5exemple-forum.xlsm (80.93 Ko)

Bonjour,

Comme indiqué hier, mon antivirus n'apprécie pas tes fichiers... Si la macro est fonctionnelle, mais que les cellules concernées ne sont pas les bonnes, je pense que tu es le mieux placé et suffisamment compétent pour reprendre toi même ton code. Il est possible que tu ais une inversion entre lignes et colonnes dans ta boucle j car la structure de Cells est la suivante : Cells(NoLigne, NoColonne).

Si l'on reprend la valeur des variables :
- i boucle sur toutes les lignes du fichier
- l n'augmente que si la première colonne a une couleur spécifique est correspond à un numéro de ligne (ça ne devrait pas plutôt être les lignes ?)
- j balaye les lignes 1 à 11 (ça ne devrait pas plutôt être les colonnes ?)
- k balaye les lignes 52 à 63 (idem ?)

Je répète que k est à priori inutile dans la mesure où k = j + 51.

Merci pour ta réponse. j'ai donc besoin de changer l'ordre de k et l et i et j dans mes "cells".

Mais j'ai toujours un soucis que je n'arrive pas à trouver...ou peut-être que j'ai mal compris ton dernier message ?

Je ne maitrise pas bien les variables dans les boucles

Merci pour ta réponse. j'ai donc besoin de changer l'ordre de k et l et i et j dans mes "cells".

Mais j'ai toujours un soucis que je n'arrive pas à trouver...ou peut-être que j'ai mal compris ton dernier message ?

Je ne maitrise pas bien les variables dans les boucles

Pour mieux comprendre le comportement de ton code, je t'invite à l'exécuter en mode pas à pas (à l'aide de la touche F8), et contrôler les valeurs de tes variables en passant ta souris dessus.

Merci pour l'astuce, je ne connaissais pas !

Je vois bien le soucis mais malgré mes essais, je ne parviens pas à cerner la cause du problème:

La macro détecte le texte en rouge MAIS le supprime ou le remplace et ne le met pas dans les cellules souhaitées

Merci pour ton aide en tout cas

Rechercher des sujets similaires à "message erreur vba end bloc"