VBA excel, petite macro a reparer

VBA excel, petite macro a reparer - VB/VBA/VBS - Programmation

Marsh Posté le 26-04-2012 à 09:49:55    

bonjour tout le monde,
 
je souhaite faire une macro tout simple:  
 
dans l'onglet "Performance table - SDIV ASIA", j'ai une liste de produits en colonne B et sur ma colonne H j'ai la quantite commande.  Je souhaiterais demander a la macro de me copier/ colle le nom de tous mes produits ayant ete commandes donc tous ceux qui ont une quantite de commande superieure a 0 dans l'onglet "Dividend chart".
 
J'ai ecrit la macro suivante mais vba m'affiche le message d'erreur suivant " run time error 13: type mismatch"
 
Sub rapatrier_lignes()
Dim Col As String
Dim Lig As Long
Dim derlig As Long
Dim nbrlig As Long
 
 
Col = "H"
numlig = 1
derlig = Sheets("Performance table - SDIV ASIA" ).[Q65536].End(xlUp).row
 
 
For Lig = 1 To derlig
Sheets("Performance table - SDIV ASIA" ).Select
   If Cells(Col, Lig).Value <> "" Then
       Cells(B, Lig).Select
       Selection.Copy
       
       Sheets("Dividend chart" ).Select
       numlig = numig + 1
       Cells(A, numlig).Select
       ActiveSheet.Paste
     
    End If
    Next
End Sub
 
 
est ce que quelqu'un peut m'expliquer ce qui cloche???
 
 
Merci d'avance

Reply

Marsh Posté le 26-04-2012 à 09:49:55   

Reply

Marsh Posté le 26-04-2012 à 10:11:30    

Bonjour,
si tu vas voir l'aide pour cells(), tu verras que :
1) c'est cells(ligne, colonne) et non l'inverse
2) colonne doit être un entier
 
Donc, par exemple :
ce n'est pas Col = "H" , mais Col = 8
ce n'est pas Cells(Col, Lig).Value, mais Cells(Lig, Col).Value
 
Il y en a d'autres à corriger dont la déclaration de variables :
Dim Col As String Integer
 
Si ça ne fonctionne toujours pas, reviens poster ton code corrigé  :)


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 26-04-2012 à 10:32:42    

hello,
 
merci pour ton aide, j'ai fait les changements. le code s'execute mais il ne se passe rien.
 
rien n'est copie sur le fichier "dividend chart". mais formule de copie/ colel est peut etre mauvaise....
voici mon code:  
Sub rapatrier_lignes()
Dim Col As Integer
Dim Lig As Long
Dim derlig As Long
Dim nbrlig As Long
 
 
Col = "8"
numlig = 1
derlig = Sheets("Performance table - SDIV ASIA" ).[Q65536].End(xlUp).row
 
 
 
 
For Lig = 1 To derlig
Sheets("Performance table - SDIV ASIA" ).Select
   If Cells(Lig, Col).Value <> "" Then
       Cells(Lig, 2).Copy
       
       Sheets("Dividend chart" ).Select
       numlig = numlig + 1
       Cells(A, numlig).Select
       ActiveCell.Paste
     
    End If
    Next
End Sub
 
 
 
 
 

Reply

Marsh Posté le 26-04-2012 à 10:54:15    

Ta colonne Q est bien remplie ?
 
Parce que ta dernière ligne se base sur la dernière cellule remplie de la colonne Q :

Code :
  1. derlig = Sheets("Performance table - SDIV ASIA" ).[Q65536].End(xlUp).row


 
Et tu as oublié une correction :
Cells(A, numlig).Select


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 26-04-2012 à 11:03:12    

ah  mince j'avais oublie ce detail, j'ai mis H a la place de q.
 
pui sj'ai bien mis Cells(numlig, A).Select
 
mais ca ne marche tjs pas...
 
tu as une idee de c equi cloche?

Reply

Marsh Posté le 26-04-2012 à 11:22:13    

Oui, j'ai une idée :
Cells(numlig, 1)
 
Si tu relies mon premier message :

Citation :

2) colonne doit être un entier


 
D'ailleurs, puisque c'est un entier, il faut aussi que tu enlèves les guillemets :
Col = "8"


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed