Erreur d'éxécution '1004 : Méthode Select de la classe Range a échoué

Bonjour à tous,
Je viens vers vous car depuis 2 jours je galère avec mon code.
Je cherche à remplir une feuille suivant une autre feuille avec quelques mise en page et quelques formules.

J'ai déclaré des variables correspondants à certaines zone de chaque feuille et en exécutant il me met une erreur 1004 !!!

Mais je ne vois pas d'où cela vient, j'ai changé la variable par une sélection directe des cellules mais idem

Si quelqu'un pouvait m'aider....je lui en serait reconnaissant.

Sub MISE_EN_PAGE_FEUIL_DEPART()

Dim PlageD As Range 'déclare la variable PlageD (Plage A4:N44 de l'onglet PRIX DEPART)
Dim PAPASource As Range    'déclare la variable PAPASource (Plage correspondant aux PAPA dans l'onglet calcul)
Dim PAPADest As Range    'déclare la variable PAPADest (Plage correspondant aux PAPA dans l'onglet PRIX DEPART)

 'Définition de PlageD correspondant à A4:N44 de l'onglet PRIX DEPART
    Set PlageD = Sheets("PRIX DEPART").Range("A4:N44")

 'Efface Plage de l'onglet PRIX DEPART
    PlageD.Clear
'Copie des cellules A4 à N44 dans l'onglet calcul
    Sheets("calcul").Range("A4:N44").Copy
'Sélection de la PlageD A4:N44 dans l'onglet PRIX DEPART <-----C'EST ICI QU'IL Y A ERREUR
    PlageD.Select

 'Collage spécial format de cellule
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False

 'Copie des cellules A4 à N44 dans l'onglet calcul
    Sheets("calcul").Range("A4:N44").Copy

'Sélection de la PlageD A4:N44 dans l'onglet PRIX DEPART
    PlageD.Select

'Collage spécial valeur
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False

'Variable h pour connaître l'adresse de la cellule contenant "PAPA"
    h = Sheets("PRIX DEPART").Range("A4:A44").Find("PAPA").Address

'Variable t pour connaître l'adresse de la cellule contenant "MAMAN" et délimiter les "PAPA"
    t = Sheets("PRIX DEPART").Range("A4:A44").Find("MAMAN").Offset(-1, 0).Address

'Variable n pour connaître le numéro de la dernière ligne des PAPA
    n = Sheets("PRIX DEPART").Range(t).Row

'Définition de PAPASource correspondant à la plage PAPA dans l'onglet calcul
    Set PAPASource = Sheets("calcul").Range(h & ":D" & n)

'Définition de PAPADest correspondant à la plage PAPA dans l'onglet PRIX DEPART
    Set PAPADest = Sheets("PRIX DEPART").Range(h & ":D" & n)

'Efface le contenu de la plage HOMARDS
    PAPADest.Clear

'Pour toutes les cellules de la PlageD
    For Each i In PlageD
            If i.Value = "" Then        'Si la cellule est vide
                i.NumberFormat = "@"    'on attribue le format texte
            End If
            If i.Value = 0 Then 'Si la cellule = 0
                i.Value = ""    'cellule = vide
            End If
    Next

'Pour toutes les cellules de la PlageD
    For Each cellule In PlageD
            If IsNumeric(cellule) And cellule > 0 Then        'Si la cellule est un nombre
                cellule.Value = Application.WorksheetFunction.MRound((cellule + 0.15) / 0.9, 0.05)   'on calcul le prix de vente mini arrondi à 0.05
            End If
    Next

'Copie de la plage PAPASource dans l'onglet "calcul"
   PAPASource.Copy

'Sélection de la plage PAPADest
    PAPADest.Select

'Collage spécial format de cellule
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False

'Copie de la plage PAPASource
    PAPASource.Copy

'Sélection de la plage PAPADest
    PAPADest.Select

'Collage spécial valeur
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False

'Pour toutes les cellules de PAPADest
    For Each i In PAPADest
            If i.Value = "" Then        'Si la cellule est vide
                i.NumberFormat = "@"    'on attribue le format texte
            End If
            If i.Value = 0 Then 'Si la cellule = 0
                i.Value = ""    'cellule = vide
            End If
    Next

'Pour toutes les cellules de PAPADest
    For Each cellule In PAPADest
            If IsNumeric(cellule) And cellule > 0 Then  'Si la cellule est un nombre
                cellule.Value = cellule + 5.5           'on calcul le prix de vente PA+5,5€
            End If
    Next

'Inscription "*" dans la cellule A6
    Range("A6").FormulaR1C1 = "PPPPPP *"

'Mettre en rouge "*"
    With ActiveCell.Characters(Start:=1, Length:=8).Font
        .Name = "Sitka Banner Semibold"
        .FontStyle = "Normal"
        .Size = 10
        .Color = -65536
    End With
    With ActiveCell.Characters(Start:=8, Length:=1).Font
        .Color = -16776961
    End With

 'Inscription "* LIVRAISON LE JEUDI ET VENDREDI" dans les cellules E6 à E9
    Range("E6").FormulaR1C1 = "*LIVRAISON"
    Range("E7").FormulaR1C1 = "LE"
    Range("E8").FormulaR1C1 = "JEUDI ET"
    Range("E9").FormulaR1C1 = "VENDREDI"

 'Mettre en rouge les caractères
    Range("E6:E9").Font.Color = -16776961

'Libérer de la mémoire
    Set PlageD = Nothing
    Set HOMARDSource = Nothing
    Set HOMARDDest = Nothing

End Sub

Bonsoir,

Pour pouvoir sélectionner votre PlageD, il faut que la feuille (= "PRIX DEPART") où elle se situe, soit active.

Bonsoir,

En plus du code, il serait bien de nous indiquer avec une capture d'écran qu'elle ligne est surlignée lors du débogage

A+

Bonsoir Thev et BrunoM45,

Déjà merci de s'intéresser à mon problème.

Thev, la feuille calcul est dans le même classeur et est active, en amont de ce "bout" de code, on travaille dessus.

BrunoM45, la ligne surlignée est la ligne 4 (tu verras (je me permets le tutoiement ) je l'ai indiqué dans les commentaires du code.

J'ai résolu mon problème

La remarque de Thev m'a fait réfléchir.... MERCI Thev

Pour pouvoir sélectionner votre PlageD, il faut que la feuille (= "PRIX DEPART") où elle se situe, soit active.

Pour moi feuille active signifie : feuille sur laquelle on travail

Or mon code s'applique à une autre feuille ( "PRIX DEPART") du même classeur sur laquelle je suis donc :

1 - j'ai ajouté des ".Activate sur les lignes qui posaient problème situées juste avant le collage spécial afin de me trouver systématiquement sur la FEUILLE ACTIVE. Ceci à 2 endroits du code et.... CA FONCTIONNE !!!

'Copie des cellules A4 à N44 dans l'onglet calcul

Sheets("calcul").Activate

Range("A4:N44").Copy

'Sélection de la PlageD A4:N44 dans l'onglet PRIX DEPART

Sheets("PRIX DEPART").Activate

PlageD.Select

Bonjour Bioteau

@Thev que je salue, pourrais te dire aussi ...

Il faut savoir faire de la programmation objets (VBA) et utiliser correctement les instructions
Il est inutile de faire des "Select" ou "Activate"

On peut remplacer

'Copie des cellules A4 à N44 dans l'onglet calcul
    Sheets("calcul").Range("A4:N44").Copy
'Sélection de la PlageD A4:N44 dans l'onglet PRIX DEPART <-----C'EST ICI QU'IL Y A ERREUR
    PlageD.Select

 'Collage spécial format de cellule
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False

 'Copie des cellules A4 à N44 dans l'onglet calcul
    Sheets("calcul").Range("A4:N44").Copy

'Sélection de la PlageD A4:N44 dans l'onglet PRIX DEPART
    PlageD.Select

'Collage spécial valeur
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False

Par tout simplement

'Copie des cellules A4 à N44 dans l'onglet calcul
Sheets("calcul").Range("A4:N44").Copy Destination:= Sheets("PRIX DEPART").PlageD
' Si il y a des formules à supprimer
Sheets("PRIX DEPART").PlageD.Value = Sheets("PRIX DEPART").PlageD.Value

A+

Merci BrunoM45 pour tes commentaires avisés.

En fait, dans les différentes étapes que j'ai menée pour essayer de résoudre le problème d'éxécution '1004, j'ai voulu dissocier un maximum les lignes pour trouver d'où venait le problème. Le problème résolu, après plus de 2 jours de galère (je ne suis qu'un débutant), je n'ai pas chercher à récrire les lignes de code .... j'étais tellement content .

Mais tu as raison, les select et paste prennent de la mémoire et sont inutiles. Je vais donc rectifier mon code.

Et cela peut servir à d'autres.

A bientôt, certainement, sur EXCEL-PRATIQUE et merci à tous.

Rechercher des sujets similaires à "erreur execution 1004 methode select classe range echoue"