Run-time error '1004

Bonjour à tous,

j'ai écris ce bout de code qui fonctionne pas du tout, j'ai beau chercher mais je ne retrouve pas l'erreur je souhaite ramener les valeurs presente dans la plage (FI99:FI1030) deuxième colonne feuille2 dans ma plage (C5:C1030) feuille3. Je vous remercie de vos réponses

Sub calcul()

Dim S1 As Worksheet
Dim S2 As Worksheet
Dim s3 As Worksheet

Set S1 = Worksheets("List")
Set S2 = Worksheets("Temp")
Set s3 = Worksheets("Calcul")

'=========================================================
'  FXC SW Equity
'==================================================

' calcul nombre de donées présentes dans la colonne "FI"
s3.Cells(2, 3).Value = Application.WorksheetFunction.Count(S2.Columns(165))

S2.Select

    S2.Range(Cells(99, 165), Cells(2000, 165)).Select
    Selection.Copy
    s3.Select
    Range(Cells(5, 2), Cells(1000, 2)).Select
    ActiveWindow.SmallScroll Down:=-108
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    Range(Cells(5, 2), Cells(1000, 2)).NumberFormat = "m/d/yyyy"

         '==============================================================
                ' calcul average BID ASK SPREAD % colonne "C"
         '==============================================================
' Titre (average bid ask spread)
s3.Cells(4, 3) = " AVERAGE BID ASK SPREAD %"

' calcul des valeurs

Dim a As Long
For a = 5 To 1030 'numéro des lignes
   s3.Cells(a, 3) = Application.VLookup(s3.Cells(a, 2), S2.Range(Cells(99, 165), Cells(1030, 166)), 2, False) ' Ramène les valeurs en fonction de la concordance entre les colonnes "B" et "FI"

Next a

    End Sub

la ligne consernée est la suivante:

s3.Cells(a, 3) = Application.VLookup(s3.Cells(a, 2), S2.Range(Cells(99, 165), Cells(1030, 166)), 2, False)

Cordialement

Bonjour,

ajoute value ( s3.Cells(a, 2).value par exemple mais ce n'est pas le seul endroit ) car dans certains cas vba demande à être plus rigoureux (mais c'est vrai qu'on peut souvent omettre value sans conséquence !

Merci steelson,

je viens de modifier, mais j'ai toujours le meme problème

bonjour

salut Steelson

dans Excel on ne fait pas comme il y a 30 ans sur papier avec un crayon, on ne "ramène" pas de données

on utilise des =

ou des copier / collage spécial avec liaison

souvent ça suffit

si insuffisant (cas de plages évolutives), on fait menu Données Obtenir (ou Power query selon les versions d'Excel)

tu devras sans doute faire

https://www.youtube.com/watch?v=gwW2CDdvUUs

jamais besoin de VBA

Bonjour,

Quelle valeur de a au moment de l'erreur ?

NB- Il est mieux de déclarer toutes ses variable en début de procédure ! (meilleure utilisation de la mémoire par VBA...)

Merci steelson,

je viens de modifier, mais j'ai toujours le meme problème

est-ce que a est bien défini ?

fais aussi un arrêt msgbox "blabla" après Selection.Copy, ouvre un traitement de texte et fais coller pour voir ....

pour mettre au point,

  • tu peux abuser de debug.print a (ou autres variables) et faire Ctrl+G
  • et comme dit MFerrand (hello !), utilise option explicit et déclare bien toutes tes variables

ou alors nous passer un bout de fichier épuré anonymisé, car j'avais émis cette hypothèse mais ce n'est pas la seule !

Réponse ...

s3.Cells(a, 3).Value = Application.VLookup(s3.Cells(a, 2).Value, S2.Range("FI99:FJ1030"), 2, False) 

j'ai du reconstituer un fichier pour trouver pourquoi !!

4laetitiayao.xlsm (77.73 Ko)

Salut Steelson !

Donne la clé : c'est la forme d'expression de Range... !!? ou que les Cells pointaient sur la feuille active qui n'était pas s2 ?

a priori, j'ai juste changé le S2.Range(Cells(99, 165), Cells(1030, 166)) en S2.Range("FI99:FJ1030") et le bug disparait !! pas compris pourquoi ... il faudrait tester sur une plage plus petite en dehors de cette application

Logique en fait ! C'est l'aspect que tu avais soulevé dès le départ ! On est sur s3, dernière feuille sélectionnée, et qui l'est restée. Donc en effet les Cells non qualifiés sur s2...

Le mixage entre sélection et qualification produit un effet pervers (masqué par les qualifications partielles) des Select !

Et comme c'est de plus coupé par des commentaires, qui font perdre le fil ! Effet pervers des commentaires !

@+

Bonjour à tous,

Je vous remercie infiniment du temps accordé et de vos éclairages. Je vais faire comme vous m'avez recommandé et je vous ferai un retour . J'ai beaucoup appris.

Rechercher des sujets similaires à "run time error 1004"