référence de variable incorrecte dans NEXT)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Michel_ja

XLDnaute Occasionnel
Bonjour à tous,
j'ai écrit une petite macro assez simple et pour la première fois je vois apparaître le message suivant "Référence de variable incorrecte dans Next" !! Il me surligne en bleu le code Next j (j étant la variable ligne) et en jaune le nom de la macro ! Si je retire le j après Next la macro se lance mais la boucle change de colonne avant de changer de ligne !!! Est-ce que vous savez d'où cela peut venir ?? merci d'avance


Sub PlanningMarque()


Dim Marque As String
Dim Compteur As Double
Dim Compteur2 As Double
Dim Model As String
Dim Segment As String
Dim BodyType As String
Dim Temps As String
Dim StrConcatenation As String


'Initiatlisation des variables
Compteur = -3 'colonne Concatener
Compteur2 = -2 'colonne Transfert
Compteur3 = -5
Compteur4 = -4

For j = 5 To 40 'j = Lignes
For i = 6 To 31 'i = Colonnes

' traitement des variables
Marque = Cells(2, i).Value
Temps = Cells(1, i).Value
Segment = Cells(j, 1).Value
BodyType = Cells(j, 2).Value


Cells(j, i).Offset(0, Compteur).Select
StrConcatenation = Segment & BodyType & Marque & Temps
ActiveCell.Value = StrConcatenation
Cells(j, i).Select
Cells(j, i).Offset(0, Compteur2).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Tableau!R6C1:R213C13,6,FALSE)"
Model = Cells(j, 4).Value
Cells(j, i).Select


If Cells(4, i).Value = "" Then
Cells(j, i).Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(StrModel+ StrBodyType, StrMarque, StrTemps)"

ElseIf Cells(4, i).Value <> "" Then
Cells(j, i).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(StrModel,Tableau!R6C1:R213C13, 6, False)"

End If


Next j
Compteur = Compteur - 1
Compteur2 = Compteur2 - 1

Next i

End Sub
 
Re : référence de variable incorrecte dans NEXT)

C'est bon ça marche cette fois ! Merci Pierrot et CergiO ! Cela veut dire que l'ordre lorsqu'on déclare les variables est important ! Enfin ici on ne déclare même pas des variables, on lui indique juste quelles sont les lignes et les colonnes... et il faut juste que la lettre i précéde la lettre j parce que c'est comme cela dans le dico ? En tout cas c'est sympa de m'avoir aider car c'est bien la première fois que je voyais ce message pas du tout explicite !
 
Re : référence de variable incorrecte dans NEXT)

Re, bonjour Sergio

plus qu'une question de déclaration de variable, c'est surtout le fait que quand tu ouvres une instruction "For", et qu'à l'intérieur de celle ci tu positionnes une autre instuction "For", la première ouverte, ne peut être fermée avant la seconde :

Code:
For boucle1 = 1 To 10
    For boucle2 = 1 To 10
        For boucle3 = 1 To 10
        'code
        Next boucle3
    Next boucle2
Next boucle1

pas sur d'être très clair, mais si cela peut t'aider...

@+
 
Re : référence de variable incorrecte dans NEXT)

Désolé, je vous dérange encore ! Savez-vous pourquoi dans mon code les fonctions Concatener et surtout RechercheV ne prennent pas en compte ma variable "model" ? est-ce qu'il y a une solution ? J'ai cru qu'il fallait mettre Str devant ou mettre Model as Variant plutôt que String mais rien n'y fait !
 
Re : référence de variable incorrecte dans NEXT)

Re,

pour utiliser des variables, lorsque tu veux renvoyer une formule dans une cellele procède comme suit :

Code:
ActiveCell.FormulaR1C1 = "=VLOOKUP([B][COLOR="Red"]" & StrModel & "[/COLOR][/B],Tableau!R6C1:R213C13, 6, False)"

non testé..

@+
 
Re : référence de variable incorrecte dans NEXT)

Donc j'ai procèdé avec la même logique pour concatener
ActiveCell.FormulaR1C1 = "=CONCATENATE(" & Model & "," & BodyType & "," & Marque & "," & Temps & ")"

et le résultat est qu'il m'inscrit la bonne forme dans la cellule à savoir :
=CONCATENER(Megane,Hatchback,Renault,Past) mais que la fonction n'opère pas !
 
Re : référence de variable incorrecte dans NEXT)

J'ai joint le fichier et actuellement le code de la macro est le suivant :
En fait je souhaite que dans les colonnes F, H n'apparaissent que le modèle de la voiture et que dans les colonnes G, I , etc apparaissent la concatenation (modèle, Bodytype, Temps) par exemple "ClioHatchbackPast" ce qui me permettra après de venir coller les photos des véhicules correspondant au dessus de ces cellules avec les dimensions de la cellule.

Je voulais que n'apparaissent dans les cellules des colonnes les données que lorsque la rechercheV a trouvé un modèle dans la feuille tableau sinon que la cellule reste vite..... alors j'ai mis <> Error mais je sais que ce n'est pas bon, il faut un truc comme <>#N/A

MERCI


Sub PlanningMarque()


Dim Marque As String
Dim Compteur As Double
Dim Compteur2 As Double
Dim Model As Variant
Dim Segment As String
Dim BodyType As String
Dim Temps As String
Dim StrConcatenation As String
Dim StrModel As String


'Initiatlisation des variables
Compteur = -3 'colonne Concatener
Compteur2 = -2 'colonne Transfert


For i = 6 To 19 'i = Colonnes
For j = 5 To 27 'j = Lignes


' traitement des variables
Marque = Cells(2, i).Value
Temps = Cells(1, i).Value
Segment = Cells(j, 1).Value
BodyType = Cells(j, 2).Value


Cells(j, i).Offset(0, Compteur).Select
StrConcatenation = Segment & BodyType & Marque & Temps
ActiveCell.Value = StrConcatenation
Cells(j, i).Select
Cells(j, i).Offset(0, Compteur2).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Tableau!R6C1:R213C13,6,FALSE)"
Model = Cells(j, 4).Text
Cells(j, i).Select


If Cells(4, i).Value = "" And Model <> Error Then
Cells(j, i).Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(" & Model & "," & BodyType & "," & Marque & "," & Temps & ")"

ElseIf Cells(4, i).Value <> "" And Model <> Error Then
Cells(j, i).Select
Cells(j, i) = Cells(j, 4)


'ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[Compteur2],Tableau!R6C1:R213C13,6,False)"

End If


Next j
Compteur = Compteur - 1
Compteur2 = Compteur2 - 1

Next i

End Sub
 
Dernière édition:
Re : référence de variable incorrecte dans NEXT)

En fait ma macro est presque terminée : j'aimerai juste insérer dans le code de la fonction SI quelque chose du type Si Model (qui est une de mes variable) est <> de #N/A alors laisse la cellule vide et passe à la nouvelle ligne !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
179
Réponses
3
Affichages
665
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
650
Réponses
3
Affichages
582
Réponses
2
Affichages
511
Retour