Erreur 1004,Erreur définie par l' application ou par l' objet

Bonjour,

J' ai un soucis avec une macro VBA-Excel. Je sélectionne une cellule dans la feuille 1. La macro récupère La civilité,le nom et le prénom d' un individu dans un tableau . Ensuite cette même macro lance une recherche en feuille 2 pour trouver la ligne correspondant à cet individu.

Je veux sélectionner les 7 colonnes de cette ligne pour en effacer les données.

Comme le titre l' indique, j' ai une erreur 1004. Je pense que cette erreur vient de la méthode Range car lorsque je remplace les variables par le nom exact de colonnes, cela fonctionne. Pourriez-vous me dire ou je bute.

Code de la macro en développement:

Option Explicit
Option Base 0
Sub MonPremierTableau() '---------- Tableau à taille fixe ----------
    'Définit la taille du tableau et le type de données.
    Dim TblSrc(2) As String, TblCbl(2), VlrSrc As String, VlrCbl As String
    Dim Cvlt As String, Nom As String, Prenom As String
    Dim Cvlt2 As String, Nom2 As String, Prenom2 As String
    Dim Lgn As Integer, Cln As Integer, i As Integer, x As Integer
    Dim Plage As Range

    ' Sélectionner une ligne et colonne
    Lgn = ActiveCell.Row
    Cln = 1
    ' Récupération des valeurs contenues
    Cvlt = Sheets(1).Cells(Lgn, Cln).Value
    Nom = Sheets(1).Cells(Lgn, Cln + 1).Value
    Prenom = Sheets(1).Cells(Lgn, Cln + 2).Value
    'Alimente les éléments du tableau
    TblSrc(0) = Cvlt
    TblSrc(1) = Nom
    TblSrc(2) = Prenom
    ' Contenu du tableau source
    VlrSrc = Join(TblSrc, " , ")
   ' Recherche de la ligne en feuille 2 de l' individu sélectionné en feuille 1
    For x = 3 To 11
        Cvlt2 = Sheets(2).Cells(x, 1).Value
        Nom2 = Sheets(2).Cells(x, 2).Value
        Prenom2 = Sheets(2).Cells(x, 3).Value
        Ndc = x
            TblCbl(0) = Cvlt2
            TblCbl(1) = Nom2
            TblCbl(2) = Prenom2
            VlrCbl = Join(TblCbl, " , ")
            If VlrCbl = VlrSrc Then
                Sheets(2).Activate
                Set Plage = Range(Cells(x, 1), Cells(x, 7)).Select
               Sheets(2).Range(Plage).Select
            End If
    Next x

End Sub

L' erreur se déclanche sur la ligne;

 Set Plage = Range(Cells(x, 1), Cells(x, 7)).Select

Si vous le juger nécessaire, je pourrai un fichier Excel

Cordialement

Bonjour,

vérifie si tu n'as pas une formule en erreur dans la plage sélectionnée.

quand tu auras vérifié et si c'est la cause,( si ce n'est pas la cause mets-nous le fichier) tu auras un autre problème (erreur 13) à cause du select (supprime-le)

remplace

Set Plage = Range(Cells(x, 1), Cells(x, 7)).Select

par

Set Plage = Range(Cells(x, 1), Cells(x, 7))

après tu auras une erreur 1004 sur l'instruction

Sheets(2).Range(Plage).Select

fais le remplacement proposé par Steelson (que je salue)

Bonjour,

Set plage = Range(Cells(x, 1), Cells(x, 7))
plage.Select

edit : bonjour h2so4 , pas vu que tu avais répondu

Je reviens vers vous suite à vos proposition.

Je n' ai pas d' erreur de formule dans les cellules concernées. La modification du code a entrainé le déplacement de la même erreur 1004 sur la ligne "Plage.select".

 If VlrCbl = VlrSrc Then
                Sheets(2).Activate
                Set Plage = Range(Cells(x, 1), Cells(x, 7))
                Plage.Select
            End If

J' en profite pour joindre le fichier test. Pour info, la feuille 1 ne contient qu' une liste d' individus. Au final, je mettrai un bouton pour lancer la macro. Pour utiliser la macro, il suffit de se positionner sur n' importe quelle ligne comprenant un nom.

La feuille 2 comprends le même tableau que la feuille 1. En utilisation normale, ces données seront verrouillées car elles sont liées par formule à la feuille 1.

La deuxième partie du tableau sera ouverte afin que l' utilisateur conforme par 1 ou rien la présence d' un individu.

Cordialement

3test-macro.xlsm (20.51 Ko)

Bonjour,

ta macro se trouve dans le module de la feuille1, mets-là dans un nouveau module.

l'activation d'une autre feuille et l'utilisation de cells dans un module de feuille ne font pas bon ménage.

8test-macro.xlsm (18.07 Ko)

Il faut que tu mettes ta macro dans un module, pas dans une feuille qui de plus n'est pas concernée.

edit, re-h2so4 décidément tu es plus rapide, je te laisse sur le sujet

Merci beaucoup, j' ai transféré la macro dans un module et depuis cela fonctionne.

Bonne soirée et encore merci.

Rechercher des sujets similaires à "erreur 1004 definie application objet"