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 1004 - Range.MergeArea [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Erreur 1004 - Range.MergeArea
    Bonjour le forum,

    J'ai une erreur dans mon code et je ne comprend pas d'où ça peut venir.

    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
    Sub ajout_hotelnextsheet(ByVal Target As Range)
    Dim a()
    Dim Rng As Range
    Dim rngEnd As Range
    Dim nbjour()
    Dim sheetname As Integer
    Dim c As Variant
    Dim compt As Integer, i As Integer
    
    
    
    Set Rng = Target.MergeArea
    Set rngEnd = Rng.Cells(Rng.Rows.Count, Rng.Columns.Count)
    
    i = 1
    compt = 1
    nbjour = Sheets("data").Range("Tableau9").Value
    a = Sheets("data").Range("Tableau3").Value
    
    
    While Sheets("MARCY").Range("B" & i).Value <> ""
    i = i + 1
    Wend
    
    Range("D" & i - 1).Value = sheetname & "/" & Range(rngEnd.Address).Row + 1 & "/" & Sheets("Interface").Range("G3").Value
    
    Sheets(sheetname).Activate
    compt = compt + 1
    
    End Sub
    J'ai pourtant vérifié que Target correspondait bien à une plage fusionné à cellule unique, la méthode marche dans d'autres cas (Je peux récupérer la dernière cellule de ma fusion), mais pas ici.
    Voici les propriétés sur Target :
    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
    Target.Merge
    Target.Select
    With Selection
            .Value = module & vbCrLf & "2/2"
            .Interior.ColorIndex = 37
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = True
    End With
    ajout_hotelnextsheet Selection
    Si quelqu'un à une piste, je suis preneur.
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 257
    Points
    34 257
    Par défaut
    Salut,
    Citation Envoyé par Excel'air Voir le message
    Target correspondait bien à une plage fusionné à cellule unique
    une cellule unique fusionnée
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    mettre le message de l'erreur peut aider non ?
    Contrôle l'adresse de Target. Voir quand même s'il n'est pas Nothing ou une plage ou union de Range.
    eric

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    amon avis il manque du code la on peut avoir les deux subs en question

    j'ai l'impression que c'est juste une histoire d'agrument range qui est deja fusionné ou pas qui doit etre injecté dans la sub dans la quel tu a l'erreur
    d'autant plus que dans ton code 1 tu fait target.merge et dans le traitement tu fait mergecells puis tu injecte ta selection sauf peu etre qu'il faut la réhinitialiser cette selection sinon c'est toujours une selection multicellule et non une fusion
    bref c'est encore une histoire de l'oeuf ou la poule qui pete un oeuf

    bien vu eriic j'avais meme pas vu
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Bonjour et merci à vous pour vos réponses,

    En contrôlant l'adresse de la cellule, j'ai bien une adresse normale ,
    c'est ensuite une erreur 1004 qui s'affiche
    Erreur définie par l'application ou pas l'objet
    .

    Voici à quel moment je sélectionne ma plage de cellule que je fusionne ensuite dans la sub envoyé précédemment :

    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
    Sub NextSheetmodule(lineNum As Variant, colNum As Variant, ByVal module As Variant, nbjour As Integer)
    Dim a As Range
    Dim b As Range
    Dim i As Variant
    Dim FdayMSuiv As Integer
    i = 1
    FdayMSuiv = Weekday(DateSerial(2018, ActiveSheet.Index, 1), vbMonday)
    Set a = Cells(lineNum, colNum)
     
     
    Select Case FdayMSuiv
            Case 6
            nbjour = nbjour + 1
            Case 7
            nbjour = nbjour + 2
            End Select
    While i <> nbjour
                If Weekday(DateSerial(2018, ActiveSheet.Index, lineNum + i - 2), vbMonday) <> 6 Then
     
                Set b = Cells(lineNum + i, colNum)
                Set b = Union(a, b)
                Set a = b
                i = i + 1
     
            Else
                Set b = Cells(lineNum + i, colNum)
     
                Set b = Union(a, b)
                Set a = b
                Set b = Cells(lineNum + i + 1, colNum)
                Set b = Union(a, b)
                Set a = b
                lineNum = lineNum + 2
            End If
    Wend
    module_merge2 a, module

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    bonjour,

    dans l'aide il est bien dit qu'il lui faut une cellule unique, Tu lui en passes 3.
    eric

  7. #7
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Bon je crois avoir trouvé la solution, j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajout_hotelnextsheet Selection
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajout_hotelnextsheet ActiveCell
    et ça fonctionne.
    Désolé du dérangement, je met le problème en résolu.

    Merci à tous pour votre aide

  8. #8
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par eriiic Voir le message
    bonjour,

    dans l'aide il est bien dit qu'il lui faut une cellule unique, Tu lui en passes 3.
    eric
    Bonjour eriiic, oui je lui en passe 3, mais elles sont fusionnées. Je ne vois pas où se situait le problème.
    En tout cas merci beaucoup, ça fonctionne.

  9. #9
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    tu pouvais aussi mettre pour réduire à une cellule.

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

Discussions similaires

  1. Range - Erreur 1004
    Par flevielle dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/08/2007, 21h40
  2. objet RANGE erreur 1004
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/08/2007, 21h47
  3. Erreur 1004, methode Paste de l'objet Range.
    Par asxasx dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 20/08/2007, 11h05
  4. [VBA-E] erreur '1004' Range
    Par dev81 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/06/2007, 09h38
  5. pb Range: erreur 1004
    Par charlie105 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2006, 17h10

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