IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Error Overflow sur worksheet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 60
    Par défaut Error Overflow sur worksheet
    Bonjour,
    Le code suivant permet de supprimer les lignes qui ne sont pas comprise entre les dates rentrees par l'utilisateur. Mon probleme se situe au niveau de la ligne 37, Vba me renvoie l'erreur overflow.
    J'ai d'abord pense que le probleme se situe au niveau de la variable D1 et j'ai donc passe en Long toutes mes variables. Mais l'erreur a persistee du coup je pense que le probleme est au niveau de la worsheets, j'ai verifie le nom est le bon du coup je comprends pas ou ca bloque.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Private Sub CommandButton1_Click()
    Dim D1 As Long
    Dim D2 As Long
    Dim EndNolig As Long
    Dim Nolig As Long
    Dim D1Lig As Long
    Dim D2Lig As Long
    Dim compt As Boolean
    Dim j As Long
    Dim i As Long
    '****************REFRESH****************
    Dim lastrow As Long
    Worksheets("Do not Alter 501 source").Activate
    lastrow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 2
    Range("A1:D" & lastrow).Copy
    Worksheets("Do not Alter 501").Activate
    ActiveSheet.Range("A1").Select
    ActiveSheet.Paste
    Application.ScreenUpdating = False
    Application.Calculation = False
    '*******************Date creation**********
    EndNolig = Worksheets("TED Defects 501").Range("A" & Rows.Count).End(xlUp).Row
    For Nolig = EndNolig To 2 Step -1
        Worksheets("Do not Alter 501").Cells(Nolig + 2, 4).Value = Worksheets("TED Defects 501").Cells(Nolig, 1).Value
    Next
    EndNolig = Worksheets("TED Defects 501").Range("A" & Rows.Count).End(xlUp).Row + 2
     
    For Nolig = EndNolig To 2 Step -1
        Worksheets("Do not Alter 501").Cells(Nolig, 4).Value = Val(Replace(Cells(Nolig, 4), "/", ""))
    Next
    '******************** tri****************************
    D1 = UserForm1.TextBox1.Value
    D2 = UserForm1.TextBox2.Value
    Nolig = EndNolig
    For Nolig = EndNolig To 3 Step -1
     
        If Worksheets("Do not Alter 501").Cells(Nolig, 4).Value = D1 Then
            D1Lig = Nolig
        End If
        If Worksheets("Do not Alter 501").Cells(Nolig, 4).Value = D2 And compt = 0 Then
            D2Lig = Nolig
            compt = 1
        End If
        Nolig = Nolig - 1
    Next
     
    For j = EndNolig To D2Lig + 1 Step -1
        Worksheets("Do not Alter 501").Cells(j, 1).EntireRow.Delete Shift:=xlUp
    Next
    For i = D1Lig - 1 To 4 Step -1
        Worksheets("Do not Alter 501").Cells(i, 1).EntireRow.Delete Shift:=xlUp
    Next
    UserForm1.Hide
    Application.ScreenUpdating = True
    Application.Calculation = True
    End Sub
    De plus sur une ancienne version du code l'erreur n'apparait pas voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub CommandButton1_Click()
    Dim D1 As Long
    Dim D2 As Long
    Dim EndNolig As Long
    Dim Nolig As Long
    Dim D1Lig As Long
    Dim D2Lig As Long
    Dim compt As Boolean
    Dim j As Long
    Dim i As Long
    '****************REFRESH****************
    Dim lastrow As Long
    Worksheets("Do not Alter 501 source").Activate
    lastrow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 2
    Range("A1:D" & lastrow).Copy
    Worksheets("Do not Alter 501").Activate
    ActiveSheet.Range("A1").Select
    ActiveSheet.Paste
    Application.ScreenUpdating = False
    Application.Calculation = False
     
    EndNolig = Worksheets("TED Defects 501").Range("A" & Rows.Count).End(xlUp).Row + 2
     
    D1 = UserForm1.TextBox1.Value
    D2 = UserForm1.TextBox2.Value
    Nolig = EndNolig
    For Nolig = EndNolig To 3 Step -1
     
        If Worksheets("Do not Alter 501").Cells(Nolig, 4).Value = D1 Then
            D1Lig = Nolig
        End If
        If Worksheets("Do not Alter 501").Cells(Nolig, 4).Value = D2 And compt = 0 Then
            D2Lig = Nolig
            compt = 1
        End If
        Nolig = Nolig - 1
    Next
     
    For j = EndNolig To D2Lig + 1 Step -1
        Worksheets("Do not Alter 501").Cells(j, 1).EntireRow.Delete Shift:=xlUp
    Next
    For i = D1Lig - 1 To 4 Step -1
        Worksheets("Do not Alter 501").Cells(i, 1).EntireRow.Delete Shift:=xlUp
    Next
    UserForm1.Hide
    Application.ScreenUpdating = True
    Application.Calculation = True
    End Sub
    Pouvez vous m'expliquer pourquoi ca ne marche pas ?

    Cordialement
    Adam

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Quelle est la valeur de NoLig au moment de l'erreur ?

    Si mes souvenirs sont bons, l'erreur overflow signifie plutôt un dépassement de capacité..

    Vu où ça plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Do not Alter 501").Cells(Nolig, 4).Value
    je dirais que Cells(Nolig,4) est en dépassement de capacité. peux-tu vérifier la valeur de Nolig ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 60
    Par défaut
    Citation Envoyé par illight Voir le message
    Quelle est la valeur de NoLig au moment de l'erreur ?

    Si mes souvenirs sont bons, l'erreur overflow signifie plutôt un dépassement de capacité..

    Vu où ça plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Do not Alter 501").Cells(Nolig, 4).Value
    je dirais que Cells(Nolig,4) est en dépassement de capacité. peux-tu vérifier la valeur de Nolig ?
    Nolig =327 au moment ou le programme plante c'est a dire qu'il plante a la premiere passe du for (Nolig=EndNolig)
    cordialement

  4. #4
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    Bonjour Adam,

    A première vue, je ne vois pas d'erreur.
    j'ai quelques remarque pour "purifié" ton code

    * mettre un Option Explicit tout en au du code --> ça t'oblige à avoir un code carré qui tourne rond

    * quand tu écrits If Worksheets("Do not Alter 501").Cells(Nolig, 4).Value = D1 Then tu demande de comparer un string vs long

    Sinon mets ton fichier en pièces jointe si tu veux plus d'aide, là je sèche

    a+

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    D'ailleurs, D1 c'est pas une date ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 60
    Par défaut
    Citation Envoyé par lucasgaetan Voir le message
    Bonjour Adam,


    * quand tu écrits If Worksheets("Do not Alter 501").Cells(Nolig, 4).Value = D1 Then tu demande de comparer un string vs long

    a+
    En fait j'ai transforme ma date JJ/MM/YYYY en un nombre JJMMYYYY du coup normalement je compare bien des nombres long
    je te joins le fichier, j'ai du supprimer la page "Do not Alter 501 source" car le fichier etait trop lourd
    cordialement

    Citation Envoyé par illight Voir le message
    D'ailleurs, D1 c'est pas une date ?
    D1 est une date sous le format JJMMYYYY
    cordialement
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    pour une date utiliser alors la propriété Value2 pour comparer avec une donnée de type Long

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 60
    Par défaut
    ma date est passe en nombre dans ce cas donc j'ai pas besoin de l'utiliser si ?
    Cordialement

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 60
    Par défaut
    Citation Envoyé par Marc-L Voir le message

    Bonjour,

    pour une date utiliser alors la propriété Value2 pour comparer avec une donnée de type Long

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    J'essaye cette voix, du coup j'ai supprime la partie du code qui me permettait d'avoir la date sous la forme d'un nombre, du coup j'utilise une date de type dd month YYYY, j'aimerais du coup rentrer ma date sous cette forme, mais la methode .Value2 ne semble pas etre reconnu quand elle est utilise avec une textbox est ce normal ?

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Option Explicit
    Private Sub CommandButton1_Click()
    Dim D1 As Long
    Dim D2 As Long
    Dim EndNolig As Long
    Dim Nolig As Long
    Dim D1Lig As Long
    Dim D2Lig As Long
    Dim compt As Boolean
    Dim j As Long
    Dim i As Long
    '****************REFRESH****************
    Dim lastrow As Long
    Worksheets("Do not Alter 501 source").Activate
    lastrow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 2
    Range("A1:D" & lastrow).Copy
    Worksheets("Do not Alter 501").Activate
    ActiveSheet.Range("A1").Select
    ActiveSheet.Paste
    Application.ScreenUpdating = False
    Application.Calculation = False
    '***************** TRI******************
    EndNolig = Range("A" & Rows.Count).End(xlUp).Row
    D1 = UserForm1.TextBox1.Value2
    D2 = UserForm1.TextBox2.Value2
    For Nolig = EndNolig To 3 Step -1
        If Worksheets("Do not Alter 501").Cells(Nolig, 2).Value2 = D1 Then
            D1Lig = Nolig
        End If
        If Worksheets("Do not Alter 501").Cells(Nolig, 2).Value2 = D2 And compt = 0 Then
            D2Lig = Nolig
            compt = 1
        End If
    Next
     
    For j = EndNolig To D2Lig + 1 Step -1
        Worksheets("Do not Alter 501").Cells(j, 1).EntireRow.Delete Shift:=xlUp
    Next
    For i = D1Lig - 1 To 4 Step -1
        Worksheets("Do not Alter 501").Cells(i, 1).EntireRow.Delete Shift:=xlUp
    Next
    UserForm1.Hide
    Application.ScreenUpdating = True
    Application.Calculation = True
    End Sub
    Merci pour l'idee
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème vidéo et overflow sur Mac
    Par gregmab dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 22/02/2007, 18h28
  2. [SQL Server 2000] Attach: error 1813 sur log
    Par Gugli dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/09/2006, 09h15
  3. [XHTML][CSS] Overflow sur DIV sans taille déterminée
    Par pingos dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 20/08/2006, 15h37
  4. Probleme Object Error Expected sur un OnClick
    Par herbert dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/07/2006, 20h24
  5. Parse error: unexpected $ sur la dernière ligne..
    Par zamoto dans le forum Langage
    Réponses: 6
    Dernier message: 01/06/2006, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo