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 :

problème bizarre entre module et feuille sous VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Par défaut problème bizarre entre module et feuille sous VBA
    Bonjour,
    Alors dans le cadre d'un projet durant mon stage, j'ai développé une petite application de suivi de contrat.
    utilisant qq lignes de VBA, j'ai déja commencé à créer ma macro VBA sous un module pour pouvoir la testé. Apres avoir fini cette macro, j'ai créé un bouton pour l'executer sur une feuille.
    Malgré le fait que l'application fonctionne sans pb ds le module, lorsque je clique sur le bouton il me revient un erreur du type 1004.
    je vous met le code ou ca bug pour que vous voyez par vous m^me.

    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
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim j As Integer
    j = 2
    i = 2
     
     
    'permet de copier coller dans la feuille OA2008 glabaux au bon endroit
    Sheets("OA 2008 bodycote IRLJ").Select
    While Not IsEmpty(Cells(i, 1).Value)
        i = i + 1
    Wend
    Range(Cells(2, 1), Cells(i - 1, 17)).Select
    Selection.Copy
    Sheets("OA 2008 globaux").Select
    Range("A2").Select
    ActiveSheet.Paste
    Sheets("OA 2008 bodycote IRLJ").Select
    Application.CutCopyMode = False
    En fait au lieu d'aller chercher la derniere ligne non vide dans la feuille c'est a dire pour i=280 environ il s'arrete a i=4 et me met une erreur au niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(2, 1), Cells(i - 1, 17)).Select
    Je précise encore une fois que le code marche tres bien en mode module ms pas lorsqu'il est attaché a un bouton sur une feuille...
    Avez vous une idée du pb?
    je vous remercie.

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    Déjà, à mon avis ton wend est placé au mauvais endroit.
    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
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim j As Integer
    j = 2
    i = 2
     
     
    'permet de copier coller dans la feuille OA2008 glabaux au bon endroit
    Sheets("OA 2008 bodycote IRLJ").Select
    While Not IsEmpty(Cells(i, 1).Value)
        i = i + 1
    Range(Cells(2, 1), Cells(i - 1, 17)).Select
    Wend
    Selection.Copy
    Sheets("OA 2008 globaux").Select
    Range("A2").Select
    ActiveSheet.Paste
    Sheets("OA 2008 bodycote IRLJ").Select
    Application.CutCopyMode = False
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Par défaut
    merci pour ta réponse mais je ne pense pas car déja dans module cela marché correctement et mon but est d'identifier la derniere case vide afin de tt selectionner avec range.
    tu n'es pas d'accord?
    Je viens de tester avec ton idée cela ne change rien.
    Mais en tt cas je pense que le wend est bien placé.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut benoist.cardinal
    D'après l'ititulé de la maco(Private Sub CommandButton1_Click) tu te trouves dans un module lié à une feuille. Si la feuille n'est pas "OA 2008 bodycote IRLJ", c'est normal, tu ne peux utiliser select (dans les modules de classe feuille) que pour la feuille.
    Si on avait un code (et pas un lambeau de code ) on pourrait t'aider.
    Pour trouver la dernière cellule tu peut utiliser .SpecialCells(xlCellTypeLastCell) ou, comme dans le texte tu dis vouloir sélectionner (beurk ) toute la plage de travail UsedRange
    Mais sans le code...
    A+

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je suis d'accord avec gorfael, mais en attendant, moi j'ai bien placé ton code sur la feuille concernée au bouton de commande et avant de voir la réponse de Gorfael,
    j'avais fait ceci et ça marche, mais tiens compte des conseils de Gorfael (plus expérimenté)
    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
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim j As Integer
    j = 2
    i = 2
     
     
    'permet de copier coller dans la feuille OA2008 glabaux au bon endroit
    Sheets("OA 2008 bodycote IRLJ").Select
    While Not IsEmpty(Cells(i, 1).Value)
        i = i + 1
    Wend
    Range(Cells(2, 1), Cells(i - 1, 17)).Select
    Selection.Copy
    Sheets("OA 2008 globaux").Activate
    Sheets("OA 2008 globaux").Range("A2").Select
    ActiveSheet.Paste
    Sheets("OA 2008 bodycote IRLJ").Select
    Application.CutCopyMode = False
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Par défaut
    je vais vour mettre tous le code et sachant que la feuille sur laquelle le bouton est attaché ne correspond à aucune des feuilles qui sont indiquées sur la page de progra.
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim j As Integer
    j = 2
    i = 2
     
     
    'permet de copier coller dans la feuille OA2008 glabaux au bon endroit
    Sheets("OA 2008 bodycote IRLJ").Select
    While Not IsEmpty(Cells(i, 1).Value)
        i = i + 1
    Wend
    Range(Cells(2, 1), Cells(i - 1, 17)).Select
    Selection.Copy
    Sheets("OA 2008 globaux").Select
    Range("A2").Select
    ActiveSheet.Paste
    Sheets("OA 2008 bodycote IRLJ").Select
    Application.CutCopyMode = False
     
     
    'permet de copier coller dans la feuille OA2008 glabaux au bon endroit
    Sheets("OA 2008 ss BODYCOTE IRLJ").Select
    While Not IsEmpty(Cells(j, 1).Value)
        j = j + 1
    Wend
    Sheets("OA 2008 ss BODYCOTE IRLJ").Select
    Range(Cells(2, 1), Cells(j - 1, 17)).Select
    Selection.Copy
    Sheets("OA 2008 globaux").Select
    Cells(i, 1).Select
    ActiveSheet.Paste
    Sheets("OA 2008 ss BODYCOTE IRLJ").Select
    Application.CutCopyMode = False
     
     
    'permet de mettre à jour le TCD OA globaux
    Sheets("TCD OA globaux").Select
    Range("D3").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable
     
     
    'permet de mettre à jour le panel des pièces délestées
    '(contractualisées + non contractualisées)
    Sheets("OA 2008 globaux").Select
    Range("C:C,D:D,M:M,N:N,O:O,Q:Q").Select
    Selection.Copy
    Sheets("pieces delestées sans doublons").Select
    Range("A1").Select
    ActiveSheet.Paste
    Cells.Select
    Range("A1:F12690").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Columns("A:F").Select
    Selection.Copy
    Sheets("panel pieces delestage").Select
    Range("A1").Select
    ActiveSheet.Paste
    Sheets("pieces delestées sans doublons").Select
    Application.CutCopyMode = False
    Range("H6").Select
    Sheets("OA 2008 globaux").Select
    Application.CutCopyMode = False
    Range("H6").Select
     
    End Sub
    Je ne comprend pas tres bien ce que tu as pu changer casefayere dans mon code mis a part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("OA 2008 globaux").Activate
    Sheets("OA 2008 globaux").Range("A2").Select
    mais la progra beuf avant cela...
    j'ai du mal a comprendre la lol.
    je suis un peu pommé.
    Gorfael j'ai bien compris ce que tu as marqué mais dans ce cas la comment fait-on pour aller sélectionner des autres feuilles et travailler dessus.
    je vous remercie pour votre aide.

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

Discussions similaires

  1. [CSS 2.1] Problème bizarre: design différent entre 2 pages sous IE8
    Par yonex68 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 20/04/2010, 17h03
  2. [VBA] problème choix de cellule dans feuille excel
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/02/2006, 10h48
  3. problème d'installation module sous windows
    Par Ickou dans le forum Modules
    Réponses: 2
    Dernier message: 21/10/2005, 16h32
  4. [Designer] Problème de transfert de données entre modul
    Par BILLYPATOU dans le forum Designer
    Réponses: 11
    Dernier message: 09/03/2004, 18h15
  5. [VBA-E] Sélection feuilles sous excel
    Par Mystic eyes dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2004, 13h27

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