Erreur 1004

Bonjour,

Je sais qu'il existe de nombreuses réponses à ce sujet mais je n'ai pas trouvé la mienne... Cette macro me sert à aller chercher les infos de la feuille 2 si on trouve le nom d'un client de la feuille 3. Puis les infos sont copier de la feuille 2 pour aller dans la 3. L'erreur se situe au niveau de la ligne en gras, merci d'avance pour votre aide ! (je crois que la deuxième phrase en gras est mauvaise aussi mais je suis pas sûr)

Sub Afficher()

Dim Trouve As Range, PlageDeRecherche As Range

Dim Valeur_Cherchee As String

Dim n As Integer

Dim m As Integer

n = 2

m = 12

For n = 2 To 100

Set PlageDeRecherche = Sheets(2).Range("cells(n,1):cells(n,12)")

Valeur_Cherchee = Sheets(3).Cells(2, 2)

Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)

If Trouve Is Nothing Then

Else

Sheets(2).Range("cells(n,1):cells(n,12)").Copy Destination:=Sheets(3).Range("cells(m,1):cells(m,12)")

m = m + 1

End If

Next

End Sub

Je ne suis pas sur mais dans ta première ligne en gras, tu mets:

Set PlageDeRecherche = Sheets(2).Range("cells(n,1):cells(n,12)")

j'aurai remplacé par:

Set PlageDeRecherche = Sheets(2).Range(n & "1:" & n & "12")

test cela déjà.

Sinon, envoie ton fichier stp!

Bonjour,

Essaies de te mettre définitivement dans la tête que les guillemets servent à encadrer une donnée de type String (texte), que les nombre ne se mettent pas entre guillemets et encore moins les mots clés du langage VBA...

Egalement que la syntaxe VBA a ses règles qui ne sont pas celles d'Excel, et dans le doute on vérifie...

    Set PlageDeRecherche = Sheets(2).Range(Cells(n, 1), Cells(n, 12))

Cordialement.

edit : Note que tu as la même erreur plus bas, mais là une difficulté supplémentaire en étant sur 2 feuilles dans la même ligne ! Je te conseillerai donc de mettre Sheets(2) sous bloc With, et donc des points devant Cells lorsque cela se réfère à cette feuille (partout à l'intérieur du bloc) ; et d'affecter Sheets(3) à une variable Worksheet afin de pouvoir qualifier les Cells qui auront à s'y référer...

ok je vais essayer merci !!!! Même si je sais pas comment utiliser tout ça...

ça ne marche toujours pas.. :/ Désolé j'ai pas ton niveau d'excel je ne comprend pas

Voilà un premier arrangement de ton code...

Sub Afficher()
    Dim Trouve As Range, PlageDeRecherche As Range, Ws3 As Worksheet
    Dim Valeur_Cherchee As String, n As Integer, m As Integer
    Set Ws3 = Sheets(3)
    m = 12
    With Sheets(2)
        For n = 2 To 100
            Set PlageDeRecherche = .Range(.Cells(n, 1), .Cells(n, 12))
            Valeur_Cherchee = Ws3.Cells(2, 2)
            Set Trouve = PlageDeRecherche.Find(Valeur_Cherchee, LookAt:=xlWhole)
            If Not Trouve Is Nothing Then
                PlageDeRecherche.Copy Ws3.Range(Ws3.Cells(m, 1), Ws3.Cells(m, 12))
                m = m + 1
            End If
        Next n
    End With
 End Sub

NB- Quand on indente, on y voit plus clair...

Autre version :

Une autre façon de cibler les plages (variantes d'adressage utiles selon ce que l'on a à écrire)...

Mais surtout si tu n'as besoin que de reproduire les valeurs, on peut éviter le copier- coller, et ce sera plus rapide !

Sub Afficher()
    Dim Trouve As Range, PlageDeRecherche As Range, Ws3 As Worksheet
    Dim Valeur_Cherchee As String, n As Integer, m As Integer
    Set Ws3 = Sheets(3)
    m = 12
    With Sheets(2)
        For n = 2 To 100
            Set PlageDeRecherche = .Cells(n, 1).Resize(, 12)
            Valeur_Cherchee = Ws3.Cells(2, 2)
            Set Trouve = PlageDeRecherche.Find(Valeur_Cherchee, LookAt:=xlWhole)
            If Not Trouve Is Nothing Then
                Ws3.Cells(m, 1).Resize(, 12).Value = PlageDeRecherche.Value
                m = m + 1
            End If
        Next n
    End With
 End Sub

Cordialement.

ça maaaaarche !!

Merci Beaucoup !!!!

Rechercher des sujets similaires à "erreur 1004"