Recopie excel avec condition

Résolu
roberto93 Messages postés 14 Statut Membre -  
roberto93 Messages postés 14 Statut Membre -
Bonjour,

Je voudrais faire une recopie des données de la colonne A de la feuille 1 et les coller sur la colonne de la feuille 2 d'excel.
Pour etre recopier et coller il faut que la valeur de la colonne C soit >1

exemple

Feuille 1
colonne A B C
matériel 1 durée1 1
matériel 2 durée2 0
matériel 3 durée3 1

Feuille 2
colonne A B C
matériel 1 durée 1
matériel 3 durée 1

le total des cellules est de 60 en tout et je ne veux pas qu'il y ai des vides entre les cellules

Merci d'avance
Configuration: Windows 2000
Internet Explorer 6.0

1 réponse

  1. slylele Messages postés 20 Statut Membre 5
     
    Bonjour,

    Si c'est ponctuel tu fais un filtre sur tes lignes est du filtres la colonne C=1 puis tu copies-colle.
    Si c'est pour l'automatiser alors tu peux faire une macro. pour pas t'embêter tu enregistres la manip ci-dessus avec l'enregistreur de macro et puis tu l'exécute au besoin ou tu attaches la macro à un bouton.

    Je ne connais pas ton niveau en Excel alors si je ne suis pas claire, n'hésite pas à demander des détails.

    Slylele
    0
    1. roberto93 Messages postés 14 Statut Membre
       
      Bonjour,

      J'ai fait le filtre avec un bouton pour automatisé le processus cependant si je fais une modification sur la feuille 1 les données ne sont pas mise sur la feuille 2 quand j'appuiesur le bouton il ne tiens compte que d'une partie du critère la selection de la plage de donnée que j'ai spécifié avant.
      Dois je ajouter une boucle dans la macro pour qu'il vérifie les critères désirées sur toute les données? Si oui comment dois je faire voici le code de la macro que j'ai enregistrer

      Private Sub CommandButton2_Click()
      Sheets("Sheet2").Activate
      ActiveWindow.SmallScroll Down:=9
      ActiveWindow.SmallScroll ToRight:=4
      ActiveWindow.SmallScroll Down:=6
      Selection.AutoFilter Field:=2, Criteria1:="Contrôle Electrique"
      Selection.AutoFilter Field:=4, Criteria1:="1"
      Range("N25:N56").Select
      Selection.Copy
      ActiveWindow.SmallScroll Down:=-18
      Range("G8:G10").Select
      ActiveWindow.SmallScroll ToRight:=-4
      Range("D8").Select
      ActiveSheet.Paste
      Range("D15").Select
      Application.CutCopyMode = False
      End Sub
      Merci de m'aider
      0
      1. roberto93 Messages postés 14 Statut Membre > roberto93 Messages postés 14 Statut Membre
         
        J'ai ajouter avec la boucle for mais j'ai une erreur de type run time 13 type mismatch dans Range("Q" & i).
        Est ce que quelqu'un pourrais m'aider s'il vous plaît?
        Je n'arrive pa a régler le problème
        merci

        Sub Contrôle_électrique()
        '
        ' Contrôle_électrique Macro
        ' Macro recorded 30/06/2008 by DEGREMONT
        '

        '
        ActiveWindow.SmallScroll Down:=9
        ActiveWindow.SmallScroll ToRight:=4
        ActiveWindow.SmallScroll Down:=6
        Selection.AutoFilter Field:=2, Criteria1:="Contrôle Electrique"
        Selection.AutoFilter Field:=4, Criteria1:="1"
        trouver = Sheets("Sheet2").Range("Q65536").End(xlUp).Row
        For i = 20 To trouver
        If Sheets("Sheet2").Range("Q" & i).Value = 1 Then
        Sheets("Sheet2").Range("N" & i).Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=-18
        Range("G8:G15").Select
        ActiveWindow.SmallScroll ToRight:=-4
        Range("D8").Select
        ActiveSheet.Paste
        Range("D15").Select
        Application.CutCopyMode = False
        End If
        Next i
        End Sub
        0
      2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453 > roberto93 Messages postés 14 Statut Membre
         
        Bonjour

        Si vous voulez, vous pouvez essayer cela, c'est plus simple.


        Sub Macro1()

        Columns("D:D").Select
        Selection.FormulaR1C1 = "=IF(RC[-1]>1,1,0)"

        Columns("A:D").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=4, Criteria1:="1"
        Columns(A:C).Select
        Selection.Copy
        Sheets("Feuil2").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
        Sheets("Feuil1").Select
        Columns("D:D").Select
        Selection.ClearContents

        End Sub

        Cette macro, en fait, crée une colonne D sur la feuille 1,
        y place une formule qui détecte les C plus grand que 1
        Fait un filtrage sur ce code
        copie A:C sur feuille 1
        colle sur feuille 2
        efface le code sur la feuille 1 en colonne D

        Bien entendu, si vous pouvez conserver cette colonne code sur feuille 1 pas de problème, il n'est utile ni de la créer ni de l'effacer, ni même de la copier vers la feuille 2 (les lignes en gras de la macro disparraissent et la copie feuille 1 se limite à C au lieu de D et devient columns(A:C)

        De même , il est possible de choisir une autre colonne que D:D

        Pour mèmoire: dans vos macro par enregistrement, vous pouvez modfier tout ce qui est ligne avec "Smallcroll". Il s'agit des mouvements de fenêtere fait pour accèder aux cellules et ils ne servent qu'à perturber l'affichage pendant l'exécution de la macro.

        CRDLMNT

        0
      3. roberto93 Messages postés 14 Statut Membre > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour merci pour vos aide!

        J'ai trouver ce que je voulais j'ai ajouter un bouton pour lancer le scipt

        Private Sub CommandButton1_Click()
        Sheets("1").Activate
        Selection.AutoFilter Field:=2, Criteria1:="Contrôle Mécanique"
        Selection.AutoFilter Field:=4, Criteria1:="1"
        Range("N23:N1000").Select
        Selection.Copy
        Range("A9").Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
        Range("A1").Select
        Rows("1:500").EntireRow.AutoFit
        Application.CutCopyMode = False
        End Sub
        0