Next sans for dans le code de la feuille sh01

Bonjour à toutes et à tous,

Premièrement, un grand merci aux membres qui m'ont efficacement aidé pour mon fichier menus tant pour la création articles menus, la création des menus et, enfin, pour la création de générer propositions MMR, journaliers et viandes midi weekend.

Dans ce fichier, code de la feuille sh01, j'ai l'erreur Next sans for : je ne vois pas lequel des deux manque ni à quel endroit. D'avance merci pour votre aide afin de m'éclairer sur la résolution de ce problème.

Bonnes fin de soirée, nuit et continuation à toutes et à tous. Prenez bien soin de vous.

Cordialement.

14budgets.zip (698.55 Ko)

Bonsoir,

il y avait un "End if" en remarque.

Private Sub Worksheet_Change(ByVal Target As Range)
        Dim dDate As Date, dEaster As Date, tTab, AnnéePrécédente, iDay%, iNb%, iEaster%, X% '% = Integer
        Application.EnableEvents = False
        Application.ScreenUpdating = False
'Effacer le contenu des feuilles BD menus, Menus midi retrait, Menus journaliers, Menus viandes midi weekend en cas de modification de l'année.
'Application.Intersect , méthode : Cette méthode renvoie un objet Range qui représente l'intersection rectangulaire de deux plages ou plus.
        If Not Intersect(Target, [NEWYEAR]) Is Nothing Then

        Dim Réponse As Integer
'vbCrLf:  dans l'aide de Microsoft Visual Basic pour Applications, dans la cadre  en haut à gauche, taper Constances diverses. vbCr : Visual Basic Caractère de saut de paragra-
'phe. vbLf : Visual Basic Caractère de saut de ligne. CrLf : Visual Basic combinaison des caractères de retour de chariot et de saut de ligne. vbInformation : dans l'aide de Micro-
'soft Visual Basic pour Applications, dans le cadre en haut à gauche, taper MsgBox Constances. vbInformation : Visual Basic Message d'information.
        Réponse = MsgBox("Attention changement d'année !" & vbCrLf & vbCrLf & "Les feuilles vont être effacées !" & vbCrLf & vbCrLf _
        & "Voulez-vous continuer ?", vbYesNo + vbExclamation)
        If Réponse = vbYes Then
             '.Cells.Font.Bold = False
                '.Cells(2, 1).Resize(13, 8).Copy
                'If X > 5 Then .Range("A" & X - 1).Resize(13, 8).PasteSpecial Paste:=xlPasteFormats
            'Calcul de la date de Pâques. DateSerial : Renvoie une valeur de type Variant (Date) correspondant à une année, un mois et un jour déterminés. Easter : en anglais si-
            'fie Pâques.
            iEaster = (19 * ([NEWYEAR] Mod 19) + 24) Mod 30 + ((2 * ([NEWYEAR] Mod 4)) + (4 * ([NEWYEAR] Mod 7)) + (6 * ((19 * ([NEWYEAR] Mod 19) + 24) Mod 30)) + 5) Mod 7
            dEaster = IIf(iEaster < 10, DateSerial([NEWYEAR], 3, iEaster + 22), DateSerial([NEWYEAR], 4, iEaster - 9))
            With Worksheets("Propositions menus midi retrait")
                For X = .Columns(1).Find(what:="Date", lookat:=xlPart, LookIn:=xlValues, searchdirection:=xlNext).Row To .Range("A" & Rows.Count).End(xlUp).Row Step 14
                'Find : Recherche la chaîne spécifiée dans le module actif. LookAt : Il peut s'agir de l'une des constantes XlLookAt suivantes : xlWhole ou xlPart. xlPart 2 Détecte une
                'correspondance avec une partie du texte recherché. LookIn Facultatif Variante Type d'informations. xlValues -4163 Valeurs. SearchDirection Facultatif XlSearchDi-
                'rection Direction de la recherche. xlNext 1 Recherche la valeur correspondante suivante dans la plage. Row : Cette propriété renvoie le numéro de la première ligne
                'de la première zone de la plage. Type de données Long en lecture seule. Rows : Cette propriété renvoie un objet Range qui représente les lignes contenues dans la
                'plage spécifiée. Objet Range en lecture seule. Rows.Count : calcule le nombre de lignes de Rows. Step : Le mot clé Step est employé dans les contextes suivants :
                'For...Next, instruction For Each...Next, instruction
        'Resize : Cette propriété redimensionne la plage spécifiée. Elle renvoie un objet Range qui représente la plage redimensionnée. RowSize Facultatif ­Variante Nombre de
        'lignes de la nouvelle plage. Si vous n'avez pas spécifié cet argument, le nombre de lignes de la plage demeure inchangé. ColumnSize Facultatif ­Variante Nombre de co-
        'lonnes de la nouvelle plage. Si vous n'avez pas spécifié cet argument, le nombre de colonnes de la plage demeure inchangé. Premier chiffre du contenu de la parenthè-
        'se : nombre de lignes; deuxième chiffre du contenu de la parenthèse : nombre de colonnes. ClearContents : Efface les formules de la plage. Interior, objet : Cet objet re-
        'présente l'intérieur d'un objet. ColorIndex, propriété : Cette propriété renvoie ou définit la couleur de la bordure, de la police ou de l'intérieur, comme l'indique le tableau sui-
        'vant. La couleur est spécifiée sous la forme d'une valeur d'index dans la palette de couleurs en cours, ou comme une des constantes XlColorIndex suivantes :
        'xlColorIndexAutomatic ou xlColorIndexNone. Type de données Variant en lecture-écriture. xlColorIndexNone -4142 Aucune couleur
                    .Range("B" & X + 1).Resize(11, 7).ClearContents
                    .Range("B" & X + 1).Resize(11, 7).Interior.ColorIndex = xlColorIndexNone
                    'Nombre de lignes : 1 (Les lignes Numéro du menu et Date du menu ne sont pas prises en compte). Nombre de colonnes : 7.
                    .Range("B" & X + 1).Resize(1, 7).Value = "LMR"
                    '4 : ligne où figure VMR.
                    .Range("B" & X + 4).Resize(1, 7).Value = "VMR"
                    .Range("B" & X + 6).Resize(1, 7).Value = 100
                    .Range("B" & X + 7).Resize(1, 7).Value = "DMR01"
                    .Range("B" & X + 8).Resize(1, 7).Value = "Pomme"
                    .Range("B" & X + 9).Resize(1, 7).Value = 1
                    For Y = 2 To 8
                        'Les instructions Do...Loop permettent d'exécuter un bloc d'instructions un nombre de fois indéfini, tant qu'une condition a la valeur True ou jusqu'à ce qu'elle
                        'prenne la valeur True.
                        Do
                            iNb = iNb + 1
                            'DateAdd : Renvoie une valeur de type Variant (Date) contenant une date à laquelle un intervalle de temps spécifié a été ajouté. ("d" : d Jour)
                            dDate = DateAdd("d", iNb, DateSerial([NEWYEAR] - 1, 12, 31))
                            'dDate : jour de la date (ici, lundi).Weekday : Renvoie une valeur de type Variant (Integer) contenant un nombre entier qui représente le jour de la semaine.
                            iDay = Weekday(dDate, vbMonday)
                            '> : Supérieur à. Si pour l'année, le jour de la date de la semaine est supérieur à NewYear alors iDat égale zéro.
                            If Year(dDate) > [NEWYEAR] Then iDay = 0
                            '< : inférieur à. Jusqu'à que iDay soit inférieur à six.
                        Loop Until iDay < 6
                        If iDay > 0 Then
                            '1 : numéro de la ligne (la ligne Titre n'est pas prise en compte); 2 : Numéro de la colonne (La colonne A est prise en compte). > : supérieur à.
                            If Y > 2 And .Cells(X - 1, 2) = "MMR260" Then _
                            'Offset : Renvoie ou définit la distance entre chaque niveau d'étiquette, ainsi que la distance entre le premier niveau et l'origine. La valeur par défaut est 100
                            'elle indique l'espace entre les étiquettes de l'axe et l'origine. La valeur utilisée doit être un entier compris entre 0 et 1 000, en fonction de la taille de la police
                            'utilisée pour les étiquettes de l'axe. Propriété de type Long en lecture-écriture. Copy : Méthode Copy telle qu'elle s'applique à l'objet Range. Copie l'objet Ran-
                            'ge dans la plage spécifiée ou dans le Presse-papiers. IIf : Renvoie l'un ou l'autre de deux arguments selon l'évaluation d'une expression.
                                 .Cells(X, Y).Offset(-1, 0).Resize(13, 6).Clear: .Cells(X, Y).Offset(-1, -1).Resize(13, 1).Copy Destination:=.Cells(X - 1, Y): .Cells(X - 1, Y) = IIf(Y = 3, _
                                "MMR261", "MMR262")
                            .Cells(X, Y) = dDate
                            'DateSerial : Renvoie une valeur de type Variant (Date) correspondant à une année, un mois et un jour déterminés.
                            .Cells(X + 11, Y) = _
                                IIf(dDate = DateSerial([NEWYEAR], 1, 1), "Jour de l'an", _
                                IIf(dDate = dEaster + 1, "Lundi de Pâques", _
                                IIf(dDate = dEaster + 50, "Lundi de Pentecôte", _
                                IIf(dDate = dEaster + 39, "Ascension", _
                                IIf(dDate = DateSerial([NEWYEAR], 5, 1), "Fête du travail", _
                                IIf(dDate = DateSerial([NEWYEAR], 5, 8), "Victoire 40-45", _
                                IIf(dDate = DateSerial([NEWYEAR], 7, 14), "Fête nationale", _
                                IIf(dDate = DateSerial([NEWYEAR], 8, 15), "Assomption", _
                                IIf(dDate = DateSerial([NEWTEAR], 11, 1), "Toussaint", _
                                IIf(dDate = DateSerial([NEWYEAR], 11, 11), "Armistice 14-18", _
                                IIf(dDate = DateSerial([NEWYEAR], 12, 25), "Noël", "")))))))))))
                                '<> : différent de.
                            If .Cells(X + 11, Y) <> "" Then .Cells(X + 11, Y).Interior.Color = RGB(255, 100, 100)
                                'et dans ce cas, que se passe t-il? ***********************************************
                            Else
                                .Cells(X, Y).Offset(-1, 0).Resize(13, 6).Clear
                                Exit For
                            End If
                        End If
                    Next
                Next
            End With
                        'Effacer les différentes feuilles.
        Else
'Application.EnableEvents , propriété : Cette propriété a la valeur True si des événements sont activés pour l'objet spécifié. Type de données Boolean en lecture-écriture.
            Application.EnableEvents = False
            [NEWYEAR] = AnnéePrécédente
        End If
    End If

        Application.ScreenUpdating = True
        Application.EnableEvents = True
End Sub

Cdlt

Bonsoir Arturo83,

Merci, rectification effectuée, plus de problème. À part de supprimer le commentaire de end if pour qu'il devienne une instruction, avez-vous effectué d'autres modification dans ce code de la feuille sh01 ?

Bonjour,

Non, pas d'autres modifications, à part ce commentaire "et dans ce cas, que se passe-t-il?" dans ajouté dans la condition suivante:

 If .Cells(X + 11, Y) <> "" Then .Cells(X + 11, Y).Interior.Color = RGB(255, 100, 100)
                                'et dans ce cas, que se passe t-il? ***********************************************

Bonjour Arturo83,

Merci. Effectivement, j'ai vu le commentaire rajouté. Quelle est la réponse à la question qui est posée ? Pour moi, il va modifier la couleur mais pas compris les chiffres contenus dans la parenthèse de RGB.

Pardon, c'est une mauvaise lecture de ma part. Du fait qu'il y a "Then .Cells(X + 11, Y).Interior.Color = RGB(255, 100, 100)" sur la même ligne que le if, on attend pas d'autre réponse.

Merci. Il y a une nouveau fil : feuille liste de choix : Colonnes Nom article.

Rechercher des sujets similaires à "next code feuille sh01"