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 d’exécution '1004' avec fonction : Do While Not IsEmpty(Plage.Offset(1, 0))


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Décembre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Décembre 2022
    Messages : 4
    Par défaut Erreur d’exécution '1004' avec fonction : Do While Not IsEmpty(Plage.Offset(1, 0))
    Bonjour à tous,

    Voici le contexte de mon problème :

    Je travaille sur l'automatisation d'un fiché excel à l'aide d'une macro qui permettrait de copier une plage de cellule ("K4:Q4") de la feuille "Plan de prévention BIS" en fonction du lieu en I4 et du nombre de la semaine en J. Pour ensuite coller la plage de cellule d'en une autre feuille qui correspond à une semaine.

    Je voudrais répéter cette opération pour toutes les lignes de la feuille "Plan de prévention BIS" en activant la macro par un bouton.

    Jusqu'ici pas de problème sur ma macro, mais les choses se complique lorsque je veux modifier cette macro. Je voudrais que si la macro détecte que la plage de cellule initialement prévu n'est pas vide, qu'elle passe automatiquement à la plage de dessous.

    Voici ma macro à cette heure ci :

    Sub test2()

    Dim feuille2 As Worksheet
    Set feuille2 = ThisWorkbook.Sheets("Liste plan de prévention BIS")

    Dim Lieu As String
    Dim Semaine As Integer
    Dim Plage As Range

    Lieu = feuille2.Range("I4").Value
    Semaine = feuille2.Range("J4").Value

    Dim feuille As Worksheet
    Set feuille = ThisWorkbook.Sheets("SEMAINE (" & Semaine & ")")

    Select Case Lieu

    Case "Compo"
    Set Plage = feuille.Range("F11:L11")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Fusion"
    Set Plage = feuille.Range("F19:L19")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Feeder-scoop"
    Set Plage = feuille.Range("F28:L28")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Chaud"
    Set Plage = feuille.Range("F42:L42")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Froid"
    Set Plage = feuille.Range("F53:L53")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Sous-sols caves"
    Set Plage = feuille.Range("F64:L64")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Sous-sols techniques"
    Set Plage = feuille.Range("F75:L75")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Logistique"
    Set Plage = feuille.Range("F92:L92")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Atelier ADF"
    Set Plage = feuille.Range("F97:L97")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Atelier M2S"
    Set Plage = feuille.Range("F108:K108")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage

    Case "Autre"
    Set Plage = feuille.Range("F118:K118")
    Do While Not IsEmpty(Plage.Offset(1, 0))
    If IsEmpty(Plage.Value) Then
    Exit Do
    End If
    Set Plage = Plage.Offset(1, 0)
    Loop
    feuille2.Range("K4:Q4").Copy Plage


    End Select

    End Sub

    Je rencontre donc l'erreur d’exécution '1004' avec : Do While Not IsEmpty(Plage.Offset(1, 0)). Je n'arrive à me débloquer...

    Je fais donc appel à votre aide.

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour publier votre code, il existe des balises que l'on active avec le bouton ("#"), voir illustration plus bas.
    Ainsi, vous pourrez nous indiquer le n° de la ligne où a lieu l'erreur

    Petite remarque :
    A chaque "Case" et sauf erreur de ma part, votre code est identique à l'exception de l'adresse de la plage donc pour faciliter votre maintenance et la lecture de votre code, je créerais une procédure indépendante avec ce code. celle-ci ayant un argument, l'adresse de la plage

    Nom : dvp Editeur Balises Code.gif
Affichages : 170
Taille : 24,2 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Décembre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Décembre 2022
    Messages : 4
    Par défaut
    Merci ! Je n'avais pas connaissance de l'option des balises.
    Normalement j'ai pu effectuer la modification.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Normalement j'ai pu effectuer la modification
    Manifestement pas.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2007] Erreur d’exécution '1004': parèmetre non valide
    Par hobine dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/09/2013, 22h59
  2. Réponses: 3
    Dernier message: 09/08/2013, 16h22
  3. Erreur en UPDATE avec fonction ExecuteNonQuery
    Par nico1492 dans le forum VB.NET
    Réponses: 1
    Dernier message: 19/06/2011, 21h59
  4. erreur dexécution 1004
    Par VELO1222 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/01/2011, 22h29
  5. Réponses: 0
    Dernier message: 27/07/2009, 23h21

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