VBA excel, petite macro a reparer - VB/VBA/VBS - Programmation
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é   
 
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 
 
 
 
 
 
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 : 
 | 
 
 
Et tu as oublié une correction : 
Cells(A, numlig).Select 
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?
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" 
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