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 :

Probleme de range, ou de set ou autre? [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Par défaut Probleme de range, ou de set ou autre?
    Bonjour,

    J´ai un soucis pour identifier ce qui n´est pas correctement ecrit dans ma macro.
    Etant donné que le débuggeur ne me signale rien, et malgrès de nombreuses tentative de contourner le probleme, je suis toujours bloqué.

    edit: Ah oui, le but de la procédure est de se balader dans diverses zones pour identifier où coller un résultat obtenu precedemment. Pour trouver le bon endroit, la macro utiliser des variables données par l´utilisateur (date, semaine, MSN) /edit

    Je colle mon code, ou du moins, la procédure qui ne fonctionne pas correctement.

    En fait, lorsque la macro arrive au 2eme "for each" ('identify pasteColumn)(ligne 39 ci dessous), le code suivant n´est pas executé.
    Je pense que l´erreur se situe dans le range un qqch du genre.
    J´ai tenté d´isoler le range dans une variable, d´utiliser set, mais cela n´a pas suffit.

    Pouvez vous m´aider?


    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
     
    Option Explicit
     
    Dim Path_Input_Workbook As String
    Dim Input_Workbook As Workbook
    Dim myYear As String
    Dim myWeek As String
    Dim myMSN As String
    Dim myMSNdecimal As String
    Dim lastRow As Long
    Dim lastColumn As Long
    Dim myCell As Range
    Dim myRange As Range
    Dim myWorkbook As String
    Dim input_PivotTable As String
    Dim output_PivotTable As String
    Dim criteriaName As String
    Dim subtotalValue As Long
    Dim classified As String
    Dim pasteSheet As String
    Dim pasteColumn As Long
    Dim pasteRow As Long
    Dim yearRow As Long
     
    Sub copyPaste()
     
        If classified = True Then pasteSheet = "MSN" & myMSN & "_classified"
        If classified = False Then pasteSheet = "MSN" & myMSN & "_not_classified"  'define sheet to paste
     
        'search the row, according to the year
        For Each myCell In Workbooks(myWorkbook).Worksheets(pasteSheet).Range("A:A")
            If myCell = myYear Then
                yearRow = myCell.Row
                Exit For
            End If
        Next
     
        'identify pasteColumn
        For Each myCell In Workbooks(myWorkbook).Worksheets(pasteSheet).Range(Cells(yearRow, 1), Cells(yearRow, 53))   '53=52 weeks + first column title
            If myCell = myWeek Then
                pasteColumn = myCell.Column
                Exit For
            End If
        Next
        MsgBox "pasteColumn=" & pasteColumn
     
        'identify pasteRow
        For Each myCell In Workbooks(myWorkbook).Worksheets(pasteSheet).Range(Cells(yearRow, 1), Cells(yearRow + 7, 1)) 'yearRow+8 because of the 7 titles in column A
            If myCell = criteriaName Then
                pasteRow = myCell.Row
                Exit For
            End If
        Next
        MsgBox "pasteRow=" & pasteRow
     
        'copypaste the result contained into variable "subtotalValue"
        Workbooks(myWorkbook).Worksheets(pasteSheet).Cells(pasteRow, pasteColumn) = subtotalValue
     
    End Sub
    Merci d´avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    La variable "myWeek" n'est pas initialisée, ou c'est mes yeux ?

  3. #3
    Membre averti
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Par défaut
    Re

    Le probleme ne vient pas de là je pense. En effet, toute mes variables ont une valeur en entrant dans la sub.
    Désole, j´aurai du préciser leur valeurs.
    Voici la valeur de mes var avant l´erreur:

    classified =False
    myYear =2013
    myWeek =wk10
    yearRow sera = 13
    criteriaName = XW CCC
    subtotalValue = 129

    J´ai l´impression que le "for each" n´aime pas le range qui suit. En effet, dans la première boucle For, Range("A:A") fonctionne, mais dans la deuxième, Range(Cells(yearRow, 1), Cells(yearRow, 53)) est comme sauté et le programme sort de la sub.

    J´ai essayé d´isoler ce range dans une var à part, mais sans success non plus.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Essaie comme ça. Si tu ne vois rien, mets ton classeur - sans données confidentielles - en PJ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        For Each myCell In Workbooks(myWorkbook).Worksheets(pasteSheet).Range(Cells(yearRow, 1), Cells(yearRow, 53))   '53=52 weeks + first column title
            Debug.Print myCell.Value
            Debug.Print myWeek
            If myCell = myWeek Then
                pasteColumn = myCell.Column
                Exit For
            End If
        Next

  5. #5
    Membre averti
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Par défaut
    Re,

    J´ai réussi à résoudre le probleme par moi meme!
    Ce matin j´ai isolé dans un module le code précédent et ai definit la valeur des variables, cela fonctionnait. J´en ai déduit que c´était un probleme de sheet, là où la macro travaille et paf!

    Donc, j´ai simplement rajouté une ligne pour activer la page de mon workbook, just avant les 3 boucles for, et cela fonctionne.

    Merci de de t´etre penché sur mon problème Daniel.

    Bonne journée

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

Discussions similaires

  1. Probleme pour concatener 2 objets Set
    Par PORTES dans le forum C++
    Réponses: 13
    Dernier message: 16/04/2007, 15h02
  2. Réponses: 3
    Dernier message: 25/12/2006, 20h45
  3. [réseau]probleme de détection d'un poste à l'autre
    Par kyukyu dans le forum Administration
    Réponses: 2
    Dernier message: 28/11/2006, 15h07
  4. [VBA-E] Probleme COPY PASTE d'une feuille à une autre
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 17h56
  5. Probleme d'apel de fonction dans une autre classe
    Par freecell31 dans le forum MFC
    Réponses: 24
    Dernier message: 13/05/2006, 11h34

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