Des lignes de code qui ne s’exécutent pas

Boujour à tous,

Je tourne en rond depuis 2 jours, il y a une situation dans mon code qui fait qu’il y a des lignes de codes qui ne s’exécutent pas mais, il n’y a aucune raison apparente.

Voici les lignes :

1) Worksheets("FormuleBuffer").Rows(3).Delete

2) Range("C2").Select

3) ActiveCell.FormulaR1C1 = _

"=IF(ISNA(MATCH(RC[-1],R[1]C[-2]:R17C[-2],0)),SUMPRODUCT((ISTEXT(R[1]C[-2]:R17C[-2])*1)),""Item trouvé"")"

PIRE encore, la première ligne est exécutée et il n’y a rien entre d’autre celles-ci !!!!!

La but de tout cela est la gestion d’une liste des quinze derniers items utilisés « Ajouté » dans le fichier FicheÉlèveProf.xls.

La liste des quinze items est sous le fichier MENU.xls, feuille FormuleBuffer.

Quand, je test la gestion des 15 items DIRECTEMENT par la cellule B2 sur la feuille FormuleBuffer, il n’y a pas de problème.

Par contre, si je passe par la FicheÉleveProf (feuille PrêtRetour, Menu-Ajout manuel), les lignes ci-haut ne sont pas exécutées, sauf la première ?????

NOTE : Ah! Oui, pour vos tests, n’utilisez pas de chiffres…. Chiffre + Lettres = OK.

Le fichier FicheÉlèveProf est dans un sous-répertoire : PrêtRetour.

IMPORTANT : Cette question sera mise sur les sites : Excel-Pratique et Excel - Download

MERCI pour le temps et les tests que vous ferez !!!!!

15menu.zip (25.46 Ko)
26ficheeleveprof.zip (27.37 Ko)

Bonjour

Il serait intéressant de connaître la démarche à suivre pour obtenir le défaut

Pour le moment je je nais pas quel fichier, quel menu, quelle donnée

Bonjour Banzai64,

Comme tu l'a suggéré, voici le mode d'emploi:

Je vais plutôt te donner la marche à suivre pour te démontrer le problème.

À retenir: Le but de tout cela est la gestion d’une liste des quinze derniers items utilisés « Ajouté » dans le fichier FicheÉlèveProf.xls. Si un nouvel item est ajouté dans (FicheÉlèveProf.xls - bouton Menu - Ajout manuel) et que cette item n'est pas listé dans (Menu.xls - feuille FumuleBuffer - colonne A), il doit-être ajouté dans celle-ci.

En résumé: Ceci ajit un peut comme dans Excel et les 10 derniers fichiers enregistrés retenu (selon nos options).

I- Ouvrir les deux fichier (Menu et FicheÉleveProf)

II- Aller sur le fichier (Menu.xls - feuille FumuleBuffer)

N.B: Je crois avoir envoyé la feuille FumuleBuffer avec 15 Items (de A3 à A17)

Si ce n'est le cas, ajuster pour avoir 15 items S.V.P..

III- Mémoriser l'item en A3.

IV- Aller à la cellule B2 et tapez une chaîne de caractères... (pas de nombre seul), suivi de [ENTRER].

V- Vérifier que votre ITEM s'est ajouté au bas de la liste et que le premier est disparru, donc 15 item au total.

Tout fonctionne bien mais, ici nous venons de tester le code de la feuille FormuleBuffer comme en mode de "développement".

Voici le mode de fonctionnement normal et qui est problèmatique:

1- Aller à (FicheÉlèveProf.xls - bouton Menu - Ajout manuel)

2- Tapez une chaine de caractères qui n'est pas listée sous la colonne CodeBar... (pas de nombre seul), suivi de [ENTRER].

3- Annuler la nouvelle InputBox

4- Vérifier que votre item est ajouté au bas de la colone CodeBar FicheÉlèveProf.

5- Aller sur le fichier (Menu.xls - feuille FumuleBuffer), l'item que vous venez de taper est ajouté dans la cellule B2 mais, pas dans la liste des 15 items en (A3 à A17) comme c'était le cas à l'étape 'V'.

C'est sur ce problèeme que ma question est posée.....

En mode de développement, le code suivant est exécuter:

Worksheets("FormuleBuffer").Rows(3).Delete

Range("C2").Select

ActiveCell.FormulaR1C1 = _

"=IF(ISNA(MATCH(RC[-1],R[1]C[-2]:R17C[- 2],0)),SUMPRODUCT((ISTEXT(R[1]C[-2]:R17C[-2])*1)),""Item trouvé"")"

En mode de fonctionnement normal, seule la première ligne du code ci-haut est exécutée pourtant, l'item tapé dans (FicheÉlèeveProf) se retrouve bien dans la cellule B2, alors que se passe t'il ?

NOTE: Si vous voulez suivre le code de (Menu.xls - feuille FumuleBuffer) en mode pas à pas, mettre un point d'arrêt à la ligne de code On Error GoTo Erreurs et refaire les étapes (I à V) et (1 à 5).....

Je sais bien que tout cela est long comme explication mais.....

En vous remerciant d'avance !!!!!

Bonjour

A vérifier

Remplaces la code existant dans le module de la page FormuleBuffer par celui-ci

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Ligne As Integer
Dim Plage As Range
Dim NouvelItem As String
Dim LongeurDeListe  As Variant      ' Variant: Type de variable qui peut recevoir
                                    ' plusieurs types de contenus...
  On Error GoTo Erreurs
  If Target.Address = "$B$2" Then       ' Si le changement est dans la cellule B2.
    Application.EnableEvents = False    ' Ceci met à OFF la gestion d'évenement
                                        ' dans le but de garder le ctrl
                                        ' durant nos opérations.
    LongeurDeListe = Range("C2")
    NouvelItem = Range("B2")
    If LongeurDeListe <> "Item trouvé" Then
      If LongeurDeListe = 15 Then      ' Si la longeur = 15, on enlève le
                                       ' premier item de la liste, donc la 3e ligne.
        Rows(3).Delete                 ' Retire le premier item.
        Range("C2").FormulaR1C1 = _
                        "=IF(ISNA(MATCH(RC[-1],R[1]C[-2]:R17C[-2],0)),SUMPRODUCT((ISTEXT(R[1]C[-2]:R17C[-2])*1)),""Item trouvé"")"
        LongeurDeListe = Range("C2")
      Else                             ' La liste est < que 15.
        NouvelItem = Range("B2")
      End If
      Range("A" & LongeurDeListe + 1 + 2) = NouvelItem
    End If
  End If
Erreurs:
  Application.EnableEvents = True   ' Remet la gestion d'évenement à ON
End Sub

Salut Banzai,

Je te remercis pour ton code mais, il semble faire un problème similaire.

Cependant, j'ai reçu un code fonctionnel par le site Excel-Download.

Voici le code:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Ligne As Integer
Dim Plage As Range
Dim NouvelItem As String
Dim LongeurDeListe  As Variant      ' Variant: Type de variable qui peut recevoir
                                   ' plusieurs types de contenus...
On Error GoTo Erreurs
If Target.Address = "$B$2" Then        ' Si le changement est dans la cellule B2.
  Application.EnableEvents = False    ' Ceci met à OFF la gestion d'évenement
                                      ' dans le but de garder le ctrl
                                      ' durant nos opérations.
With Workbooks("Menu.xls").Worksheets("FormuleBuffer")
   LongeurDeListe = .Range("C2")
   NouvelItem = .Range("B2")
   If LongeurDeListe <> "Item trouvé" Then
      If LongeurDeListe = 15 Then      ' Si la longeur = 15, on enlève le
                                      ' premier item de la liste, donc la 3e ligne.
        .Rows(3).Delete      ' Retire le premier item.
' -----------------------------------------------------
        .Range("C2").FormulaR1C1 = _
         "=IF(ISNA(MATCH(RC[-1],R[1]C[-2]:R17C[-2],0)),SUMPRODUCT((ISTEXT(R[1]C[-2]:R17C[-2])*1)),""Item trouvé"")"
' -----------------------------------------------------
        LongeurDeListe = .Range("C2")
      Else                             ' La liste est < que 15.
        NouvelItem = .Range("B2")
         ' Range("A" & LongeurDeListe + 1 + 2) = NouvelItem

      End If
   .Range("A" & LongeurDeListe + 1 + 2) = NouvelItem
   Workbooks(NomDeLaFicheEleveProf).Activate           ' Active la FicheÉleveProf.
  End If
End With
      Application.EnableEvents = True     ' Remet la gestion d'évenement à ON
End If

Erreurs:
   If Err <> 0 Then Application.EnableEvents = True   ' Remet la gestion d'évenement à ON
End Sub

MERCI encore pour ton aide !!!!!

Rechercher des sujets similaires à "lignes code qui executent pas"