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 :

erreur 91 variable objet ou variable de bloc with non définie


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut erreur 91 variable objet ou variable de bloc with non définie
    Bonjour,

    j'ai un fichier Excel qui va piocher des données statistique dans différents fichier pour les rassembler dans un fichier global grâce à un module VBA...Je le fais pour chaque mois. Et aujourd'hui je suis passé au mois de décembre et j'ai cette erreur 91.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
     
        Dim wSy As Excel.Workbook 'objet classeur synthese simm rc mob
        Dim shSy As Excel.Sheets
        Dim sSy As Excel.Worksheet
        Dim rSy As Excel.Range
     
        Dim ligne_cibleMob As Integer
        Dim ligne_cibleRc As Integer
        Dim colonne_jour As Integer
        Dim TabMoisOnglet(1 To 12) As String
     
        Dim i As Integer
     
        TabMoisOnglet(1) = "Janvier 2009"
        TabMoisOnglet(2) = "Février 2009"
        TabMoisOnglet(3) = "Mars 2009"
        TabMoisOnglet(4) = "Avril 2009"
        TabMoisOnglet(5) = "Mai 2009"
        TabMoisOnglet(6) = "Juin 2009"
        TabMoisOnglet(7) = "Juillet 2009"
        TabMoisOnglet(8) = "Aout 2009"
        TabMoisOnglet(9) = "Septembre 2009"
        TabMoisOnglet(10) = "Octobre 2009"
        TabMoisOnglet(11) = "Novembre 2009"
        TabMoisOnglet(12) = "Décembre 2009"
     
     
        Set wSy = Application.Workbooks.Open(synthesesimm_file)
        Set shSy = wSy.Sheets
     
        'recherche de l'onglet du mois et init des objets
        i = 0
        Do While i < shSy.Count
            i = i + 1
            If TabMoisOnglet(MoisInt) = wSy.Worksheets(i).Name Then
                Set sSy = wSy.Worksheets(i)
                Set rSy = sSy.Range("A1:Z100")
                i = shSy.Count
            End If
        Loop
     
        'recherche des lignes rc et mob à compléter
        ligne_cibleRc = "1"
        colonne_jour = "2"
        Do Until rSy(ligne_cibleRc, colonne_jour).Value = JourInt
            ligne_cibleRc = ligne_cibleRc + 1
        Loop
     
        ligne_cibleMob = ligne_cibleRc + 1
        Do Until rSy(ligne_cibleMob, colonne_jour).Value = JourInt
            ligne_cibleMob = ligne_cibleMob + 1
        Loop
     
        'copie des variables
        rSy(ligne_cibleRc, 6).Value = Prod_moy_realisee_simm_rc
        rSy(ligne_cibleRc, 7).Value = Prod_moy_prevue_simm_rc
     
        rSy(ligne_cibleRc, 3).Value = Tps_log_realise_simm_rc
        rSy(ligne_cibleRc, 3).NumberFormatLocal = "[h]:mm:ss"
     
        rSy(ligne_cibleRc, 4).Value = Tps_log_prevu_simm_rc
        rSy(ligne_cibleRc, 4).NumberFormatLocal = "[h]:mm:ss"
     
        rSy(ligne_cibleMob, 6).Value = Prod_moy_realisee_simm_mob
        rSy(ligne_cibleMob, 7).Value = Prod_moy_prevue_simm_mob
     
        rSy(ligne_cibleMob, 3).Value = Tps_log_realise_simm_mob
        rSy(ligne_cibleMob, 3).NumberFormatLocal = "[h]:mm:ss"
     
        rSy(ligne_cibleMob, 4).Value = Tps_log_prevu_simm_mob
        rSy(ligne_cibleMob, 4).NumberFormatLocal = "[h]:mm:ss"
     
     
        wSy.Close True
        Set wSy = Nothing
        Set shSy = Nothing
        Set sSy = Nothing
        Set rSy = Nothing
     
    End Sub
    Si vous pouviez m'aider, parce que là je vois pas trop, sachant que je n'ai pas de boucle with, il y a une variable qui doit posé prbolème mais je vois pas laquelle.

    Merci.

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Sur quelle ligne?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,

    En attendant la réponse à la question de Pierre Fauconnier je me lance à l'aveugle et je tente le coup sur le nom de la feuille de Décembre 2009.
    Peut-être un accent manquant ? En tout cas je soupçonne une différence de syntaxe entre TabMoisOnglet(12) et le nom réel de la feuille.

    A+
    N'oubliez pas le si votre problème est solutionné.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Frédéric,

    Au départ, j'ai pensé comme toi, mais on aurait alors une erreur 9 Indice n'appartient pas à la sélection...

    Cela étant, le code utiliser shSy en tant que collection Sheets, mais dans la boucle, on pointe vers la collection WorkSheets => problème potentiel s'il y a des feuilles de graphique dans le classeur, mais à nouveau, cela ne donnerait pas une erreur 91...

    Cela étant, s'il n'y a que des worksheets, la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While i < shSy.Count
    doit s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While i <= shSy.Count
    pour passer aussi sur Décembre, et c'est de là que vient le problème.

    Il faudrait corriger la sortie de boucle par un
    plutôt qu'en attribuant une "valeur de sortie" à i
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Ah oui désolé d'avoir oublié de préciser...à la ligne là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Do Until rSy(ligne_cibleRc, colonne_jour).Value = JourInt
    Pour ce qui est du nom de feuille cela correspond bien au niveau des noms

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Corrige avec les indications que je t'ai fournies, je pense que cela devrait aller
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Au lieu de $i = shSy.count je mets exit do c'est ça?

  8. #8
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut Frédéric,

    Au départ, j'ai pensé comme toi, mais on aurait alors une erreur 9 Indice n'appartient pas à la sélection...

    Cela étant, le code utiliser shSy en tant que collection Sheets, mais dans la boucle, on pointe vers la collection WorkSheets => problème potentiel s'il y a des feuilles de graphique dans le classeur, mais à nouveau, cela ne donnerait pas une erreur 91...

    ...
    En effet , j'y penserai 2 fois avant de me relancer à l'aveugle...
    N'oubliez pas le si votre problème est solutionné.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Suite à tes conseils j'ai testé et j'ai maintenant une erreur 9 l'indice n'appartient pas à la séléction comme vous l'avez dit plus bas... à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If TabMoisOnglet(MoisInt) = wSy.Worksheets(i).Name Then

    J'ai des graphiques dans mon fichiers c'est pour ça mais je ne sais pas se que je dois faire
    Merci de votre aide.

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Redonne tout le code, sinon, on doit recoller les morceaux nous-mêmes
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Private Sub Copie_Var_SyntheseSIMMRCMOB()
    
        Dim wSy As Excel.Workbook 'objet classeur synthese simm rc mob
        Dim shSy As Excel.Sheets
        Dim sSy As Excel.Worksheet
        Dim rSy As Excel.Range
    
        Dim ligne_cibleMob As Integer
        Dim ligne_cibleRc As Integer
        Dim colonne_jour As Integer
        Dim TabMoisOnglet(1 To 12) As String
    
        Dim i As Integer
            
        TabMoisOnglet(1) = "Janvier 2009"
        TabMoisOnglet(2) = "Février 2009"
        TabMoisOnglet(3) = "Mars 2009"
        TabMoisOnglet(4) = "Avril 2009"
        TabMoisOnglet(5) = "Mai 2009"
        TabMoisOnglet(6) = "Juin 2009"
        TabMoisOnglet(7) = "Juillet 2009"
        TabMoisOnglet(8) = "Aout 2009"
        TabMoisOnglet(9) = "Septembre 2009"
        TabMoisOnglet(10) = "Octobre 2009"
        TabMoisOnglet(11) = "Novembre 2009"
        TabMoisOnglet(12) = "Décembre 2009"
        
        
        Set wSy = Application.Workbooks.Open(synthesesimm_file)
        Set shSy = wSy.Sheets
        
        'recherche de l'onglet du mois et init des objets
        i = 0
        Do While i <= shSy.Count
            i = i + 1
            If TabMoisOnglet(MoisInt) = wSy.Worksheets(i).Name Then            Set sSy = wSy.Worksheets(i)
                Set rSy = sSy.Range("A1:Z100")
                i = shSy.Count
            End If
        Loop
    
        'recherche des lignes rc et mob à compléter
        ligne_cibleRc = "1"
        colonne_jour = "2"
        Do Until rSy(ligne_cibleRc, colonne_jour).Value = JourInt
            ligne_cibleRc = ligne_cibleRc + 1
        Loop
        
        ligne_cibleMob = ligne_cibleRc + 1
        Do Until rSy(ligne_cibleMob, colonne_jour).Value = JourInt
            ligne_cibleMob = ligne_cibleMob + 1
        Loop
        
        'copie des variables
        rSy(ligne_cibleRc, 6).Value = Prod_moy_realisee_simm_rc
        rSy(ligne_cibleRc, 7).Value = Prod_moy_prevue_simm_rc
        
        rSy(ligne_cibleRc, 3).Value = Tps_log_realise_simm_rc
        rSy(ligne_cibleRc, 3).NumberFormatLocal = "[h]:mm:ss"
        
        rSy(ligne_cibleRc, 4).Value = Tps_log_prevu_simm_rc
        rSy(ligne_cibleRc, 4).NumberFormatLocal = "[h]:mm:ss"
        
        rSy(ligne_cibleMob, 6).Value = Prod_moy_realisee_simm_mob
        rSy(ligne_cibleMob, 7).Value = Prod_moy_prevue_simm_mob
        
        rSy(ligne_cibleMob, 3).Value = Tps_log_realise_simm_mob
        rSy(ligne_cibleMob, 3).NumberFormatLocal = "[h]:mm:ss"
        
        rSy(ligne_cibleMob, 4).Value = Tps_log_prevu_simm_mob
        rSy(ligne_cibleMob, 4).NumberFormatLocal = "[h]:mm:ss"
        
      
        wSy.Close True
        Set wSy = Nothing
        Set shSy = Nothing
        Set sSy = Nothing
        Set rSy = Nothing
    
    End Sub
    l'erreur correspond à la ligne en gras

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Corrige déjà cela (cfr un de mes messages précédents)
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set shSy = wSy.Worksheets
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    J'ai toujours la même erreur...

  14. #14
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    si je me permet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        i = 1
        Do While i <= shSy.Count
     
            If TabMoisOnglet(MoisInt) = wSy.Worksheets(i).Name Then
                Set sSy = wSy.Worksheets(i)
                Set rSy = sSy.Range("A1:Z100")
                exit do
            End If
           i = i + 1
        Loop
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    si je fais ce que me dit mercatog, je reviens à la première erreur : erreur 91...au même endroit

  16. #16
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Il faudrait débuguer en lançant la procédure pas à pas avec la fenêtre des variables locales et éventuellement des variables espion

    Si ton erreur se situe toujours (cfr ton message de 14:03) sur la ligne en gras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Do While i <= shSy.Count
            i = i + 1
            If TabMoisOnglet(MoisInt) = wSy.Worksheets(i).Name Then
                Set sSy = wSy.Worksheets(i)
                Set rSy = sSy.Range("A1:Z100")
                i = shSy.Count
            End If
        Loop
    alors, tu dois vérifier chacune des variables utilisées sur cette ligne
    wSy est-il un objet WorkBook valide?
    Que vaut MoisInt?
    Que vaut i?
    Que vaut wSy.Worksheets(i).Name?

    Je ne vois pas d'autre façon pour débusquer l'erreur
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Mon erreur est sur la toute première que je vous ai indiqué:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ligne_cibleRc = "1"
        colonne_jour = "2"
        Do Until rSy(ligne_cibleRc, colonne_jour).Value = JourInt        ligne_cibleRc = ligne_cibleRc + 1
        Loop
    cf ligne en gras

  18. #18
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    Je vais essayer de me faire pardonner mon "aveugle"...

    Si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSy = wSy.Worksheets(i)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rSy = sSy.Range("A1:Z100")
    et que
    et
    Du coup je comprends pas du tout ceci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rSy(ligne_cibleRc, colonne_jour)
    Car si on récapitule ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wSy.Worksheets(i).Range("A1:Z100")("1","2")
    Ne serait-ce pas ceci que tu veux pour ta première boucle?
    Il faut donc que
    et
    Et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do Until sSy.cells(ligne_cibleRc, colonne_jour).Value = JourInt
    A+
    N'oubliez pas le si votre problème est solutionné.

  19. #19
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Alors, c'est que tu ne passes pas dans la boucle pour définir la plage rSy, donc rSy est Nothing ce qui renvoie bien une erreur 91.

    Mets un point d'arrêt sur le Do Whileet lance ta procédure. Tu vas alors boucler en pas à pas et voir quelles sont les valeurs des variables à l'intérieur de la boucle (Notamment MoisInt car je ne vois nulle part que cette variable prend une valeur)...

    Ici, le "secret", c'est le débogage en pas à pas...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bien vu Frédéric,

    Faut dire que entre rSy et sSy comme noms de variables, il y a de quoi se fourvoyer...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Erreur (91) variable objet ou variable de bloc with non définie
    Par BENNASR dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/12/2014, 15h22
  2. Réponses: 4
    Dernier message: 24/05/2014, 19h24
  3. Erreur d'éxécution '91' variable objet ou variable de bloc with non définie
    Par abdelkarim_1987 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 16/08/2013, 17h22
  4. Erreur 91 : variable objet ou variable de bloc with non définie
    Par blobsam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2011, 17h19
  5. [XL-2007] Message d'erreur : Variable objet ou Variable de bloc With non définie
    Par toushusss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2011, 10h02

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