Boucle message "For sans next"

Bonjour à vous tous,

J'ai un petit problème à résoudre dans mon fichier ci-joint,

Le message "For sans next" apparait, j’essaie de créer une boucle pour récupérer (onglet Feuil2) pour chaque combinaison (num1,num2) les valeurs i3,j3,k3 pour les incorporer dans les colonnes "max","moyenne","dernier écart".

19projet.xlsm (498.03 Ko)

Merci infiniment de votre aide,

Roland

Bonsoir,

Si un message te le dit, c'est qu'il manque une fin d'instruction ! Cela peut être un Next comme le message l'indique, mais cela pourrait aussi bien être un End If ou un End With, etc., VBA t'indique qu'il ne trouve pas ce qu'il attend mais il peut ne pas être très précis dans le contexte... Ce qui est sûr, c'est qu'un élément manque. Une lecture attentive permet toujours de le trouver.

Au cas particulier, pas d'erreur d'aiguillage, c'est bien un Next. Tu l'aurais vu immédiatement en indentant (correctement) ton code.

[Et en évitant de noyer tes instructions dans des Select inutiles... ]

Cordialement.

Bonjour,

Merci pour vos explications, j'ai essayé de modifier le code en conséquence mais il ne fonctionne toujours pas.

Ayant un niveau très léger sur VBA, seriez vous vous en mesure de corriger le code pour que la boucle fonctionne ?

Par avance, merci beaucoup pour votre aide,

Cordialement,

Roland

Alors là, il serait bon que tu expliques exactement ce à quoi tu veux aboutir, car ton code est particulièrement confus !

Tu devrais te douter qu'opérant 2 sélections à la suite, seule la dernière sera la sélection... à laquelle tu appliques 2 boucles distinctes... je ne suis pas sûr que le résultat donnera ce que tu attendais.

Et je ne suis du coup pas sûr du résultat que tu attends.

ok, dans l'onglet "Feuil2" :

1) je souhaite copier chaque combinaisons (num1,num2) dans les cellules g3 et h3

2) Je souhaite ensuite copier les valeurs des cellules i3,j3,k3 dans le tableau "max","moyenne","dernier écart" pour chaque combinaisons (2417 combinaisons).

J'ai inséré des flèches explicatives dans le fichier pour expliquer visuellement le process pour la boucle.

12projet.xlsm (497.80 Ko)

Merci d'avance pour votre aide,

Cordialement,

Roland

Je ne comprends toujours pas ce que tu veux faire !

Mais je vais t'expliquer ce que tu fais avec ta macro.

Mes lignes de commentaires sont encadrées par des ==mes commentaires==

Sub projet()
    Dim num1 As Range
    Dim num2 As Range
    Dim Feuil2 As Worksheet
    '==On ne voit pas bien pourquoi cette dernière déclaration, tu ne l'utilise pas.==
    '==La variable n'est jamais initialisée.==
    'Selectionner les numéros num1 et num2
    Workbooks("projet.xlsm").Worksheets("Feuil2").Activate
    '==Feuil2 est la feuille active ! La macro était activée par un bouton sur Feuil2 !==
    '==Pour pouvoir activer le bouton, il fallait déjà que Feuil2 soit la feuille active !==
    '==Outre le fait qu'activer est inutile, on active la feuille active !!!==
    Range("b13", [V65536].End(xlUp).Address).SpecialCells(xlCellTypeVisible).Select
    '==Sélectionner est de même inutile... Mais, on sélectionne une plage sur Feuil2...==
    '==...de B à V dimensionnée de la ligne 13 à la dernière ligne occupée de la colonne V,==
    '==laquelle est vide ! Ah ! Ce qui donne (vérification faite) B1:V13 sélectionnée !==
    '==Est-ce bien cela que l'on voulait ?==
    Range("c13", [V65536].End(xlUp).Address).SpecialCells(xlCellTypeVisible).Select
    '==Mais on ne s'arrête pas là ! On fait la même opération de sélection à partir de C13 !==
    '==Cette nouvelle plage est incluse dans la précédente.==
    '==Je pensais que la sélection nouvelle annulerait la précédente, mais non !==
    '==La sélection demeure, seule la cellule active est déplacé en C1.==
    '==(Ce résultat m'intrigue, je n'obtiens pas un tel résultat sur divers tests similaires.==
    '==Ce point reste à élucider.) La sélection des seules cellules visibles est sans effet.==
    '==Toutes les cellules sont visibles sur la feuille.
    'Recopier les numéros num1 et num2 dans les cellules G3 et H3
    For Each num1 In Selection
        Sheets("Feuil2").Range("G3").Value = num1.Value
    Next
    '==Voilà une première boucle. J'ai rajouté le 'Next' dont l'absence plantait la macro.==
    '==On défile toutes les cellules de la sélection, qui je le rappelle est B1:V13...==
    '==On affecte successivement la valeur de chaque cellule de la sélection à G3 !==
    '==On a connu plus absurde certes ! Mais dans le genre c'est pas mal !!==
    '==En fin de parcours, G3 a la valeur de la dernière cellule, V13, vide...==
    For Each num2 In Selection
        Sheets("Feuil2").Range("h3").Value = num2.Value
    Next
    '==Et on recommence une nouvelle boucle, sur la même sélection.==
    '==Mais avec une nouvelle variable de boucle !!! Pourquoi deux ?==
    '==La même aurait fait l'affaire ! On fait la même chose que précédemment mais pour H3.==
    '==En bout de course, H3 se trouve donc vide, de la même façon que G3.==
    'Recopier les cellules I3, J3 et K3 dans les colonnes E,F,G
    Range("I3:K3").Select
    Selection.Copy
    Range("E13:G13").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    '==Et pour finir, on copie I3:K3 pour en coller les valeurs sur E13:G13.==
    '==Passons sur le mode enregistré du code qui consiste à écrire en plusieurs lignes,==
    '==ce qui tient en une seule, en faisant des détours, et à définir des paramètres ==
    '==à la valeur qu'ils ont déjà, en les passant par nom pour faire plus long !==
    '==L'essentiel est que I3, J3 et K3 contiennent des valeurs issues (par formules) ==
    '==de Feuil1 qui n'intervient à aucun moment dans la macro. Les cellules visées ne sont==
    '==à aucun moment affectées par l'exécution de la macro. Ce copier-coller intervient ==
    '==donc indépendamment de ce qui précède.==
    '==On a donc affaire à une macro dont on ne comprend pas ce qu'elle fait dans sa ==
    '==première partie ni pourquoi, et dont la raison du collage final demeure énigmatique==
    '==sinon ésotérique !==
End Sub

Ton explication est résumée par tes flèches, qui indiquent que B13 et C13 devaient aller en G3 et H3. Mais pas pourquoi une boucle pour ce faire, et définie de telle façon qu'elle ne pouvait aboutir à un tel résultat. Mais surtout ton explication confirme ce que la macro montrait, que les choses sont distinctes, n'ont aucun rapport entre elles et leur présence dans une même macro est totalement artificielle : on pourrait mettre le copier-coller en début de macro, le résultat n'en serait pas changé !

J'en déduis que ton explication n'en est pas une...

A suivre si toutefois une explication rationnelle te vient.

Cordialement.

Bonjour, manifestement on ne se comprend pas, mon explication avec les flèches dans le fichier est pourtant claire...

Ce n'est pas grave, merci quand même, je vais me débrouiller autrement .

Cordialement,

Roland

Ton explication est bien trop sommaire pour être claire ! Et pourtant Excel utilise des cellules, des plages... qui des noms, adresses, références précises pour qu'on les pointe sans aucune ambiguïté, ...à condition de les utiliser.

Et quand je te décris ce que fait réellement ta macro, avec la précision voulue, cela ne te fait apparemment même pas sourciller...

Je te dis : que tu sélectionnes B1:V13... le réflexe de n'importe qui serait de soit dire que ce n'est pas la bonne plage, indiquer l'adresse de la plage qui aurait dû être sélectionnée (puis expliquer pas à pas ce qui aurait dû advenir ensuite), soit dire que c'est bien la bonne plage (et expliquer également se qui aurait dû se passer alors !)

Mais rien...

Bon courage donc !

Mon explication est peut être trop sommaire à ton gout mais elle est très claire contrairement à tes demandes d'explications qui me paraissent très confuses et de la longueur d'un roman.

Mon problème a été solutionné facilement sur un autre forum...

Merci,

Rechercher des sujets similaires à "boucle message next"