Copier Coller des cellules sous conditions

Copier Coller des cellules sous conditions - VB/VBA/VBS - Programmation

Marsh Posté le 22-04-2010 à 10:55:27    

Bonjour,
 
A partir d'un tableau excel contenant des élements salariaux, je cherche à repérer les salariés ayant eu une promotion et à coller leur nom/prénom dans un autre onglet.
 
J'ai ce bout de code mais il me renvoie une belle erreur soit 1004 soit une erreur d'exécution 9.
 
Par ailleurs, je souhaite rajouter une difficulté. En fonction de sa catégorie (Ouvrier, ETAM, Cadre), je veux qu'il colle les éléments dans une autre colonne.
 
Je vous ermercie par avance pour votre aide.
 
Cordialement
 
Sub copiercoller()
 
    Dim i As Integer
    Dim y As Integer
    i = 2
    'Selection de l'onglet ou se situe la liste non triee
    Sheets("Tab saisie" ).Select
     
    'Une boucle va faire la copie tant qu'il y aura des noms dans la colonne
    While (Range(9, i) <> "" )
        If (Range(59, i) <> "" ) Then
            Range(9, i).Select
            'copie, sélection de la feuille et collage
            Selection.Copy
            Sheets("Synthèse DD" ).Select
            y = 49
            Do While (Range(1, y) <> "" )
                y = y + 1
            Loop
            'Collage là où il faut
            Range(1, y).Select
            ActiveSheet.Paste
        End If
    Wend
End Sub

Reply

Marsh Posté le 22-04-2010 à 10:55:27   

Reply

Marsh Posté le 22-04-2010 à 22:17:05    

Tu pourrais dire à quelle ligne l'erreur se produit.
ça doit être une boucle qui déborde.

Reply

Marsh Posté le 23-04-2010 à 11:29:03    

fab035 a écrit :

Tu pourrais dire à quelle ligne l'erreur se produit.
ça doit être une boucle qui déborde.


 
Bonjour,
 
J'ai modifié mon code mais là, j'ai une autre erreur : erreur 404 - Objet requis.
C'est dur de ce remettre à VB après des années sans pratique.
 
Sub copiercoller()
    Dim source As Worksheet
    Dim dest As Worksheet
    Dim i As Integer
    Dim y As Integer
 
    Set source = Workbook.Worksheet("Synthèse" )
    Set dest = Workbook.Worksheet("Tableau" )
 
    y = 1
 
        For i = 3 To 400
         If source.Cells(i, 17).Text = "2**" Then
         source.Cells(i, i).Copy Destination = Cells(y, 1)
            y = y + 1
         End If
         Next
End Sub
 
Je vous remercie par avance
 
Cordialement

Reply

Marsh Posté le 24-04-2010 à 14:18:41    


Ma réponse précédente était :
 
-Tu pourrais dire à quelle ligne l'erreur se produit.
 
Je n'ai pas vu ta réponse à ce sujet.
 
Ensuite, tu poses une nouvelle question sans avoir pris la peine de dire si tu as solutionné ton premier problème et si oui comment.  

Reply

Marsh Posté le 25-04-2010 à 19:27:46    

fab035 a écrit :


Ma réponse précédente était :
 
-Tu pourrais dire à quelle ligne l'erreur se produit.
 
Je n'ai pas vu ta réponse à ce sujet.
 
Ensuite, tu poses une nouvelle question sans avoir pris la peine de dire si tu as solutionné ton premier problème et si oui comment.  


Bonjour,
 
En fait les deux font partis du même fichier et du même problème. Résoudre l'un, résoudra l'autre. Le second bout de code est inspiré d'une idée soufflée par un ami. En fait, il a l'air plus efficace et répond assez bien à la problématique. Cette dernière solution me semble une piste de réflexion bien meilleure et plus simple. Mais, il y a malgré tout une erreur que je ne comprends pas.
Dans le cadre du second bout de code, il s'agit aussi de récupérer une donnée (Nom - Prénom) dans un onglet ("Synthèse" ) en fonction d'une catégorie (ici 2**) et de copier le Nom-Prénom dans un autre onglet Excel ("Tableau" ).
Dans ce dernier bout de code, l'erreur se produit à la première ligne lors de l'exécution pas à pas - "Erreur 424 - Objet requis". Je croyais pourtant avoir définit mon objet.
Mon code doit dire que dans l'onglet "Synthèse" si des cellules de la colonne Q (N°17) contiennent la référence "2**" alors tu copies et colles le Nom-Prénom correspondant dans l'onget "Tableau" les uns à la suite des autres.
En écrivant, je m'aperçois que je crois avoir mal nommée la colonne Nom-Prénom (source.cells(i,i)). Le second i devrait désigner la colonne D (N°4).
 
Voilà toute l'explication.
 
Merci par avance,
 
Cordialement.

Reply

Sujets relatifs:

Leave a Replay

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