Recopie excel avec condition

Résolu
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. 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. 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
    2. @roberto93J'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
    3. Contributeur
      @roberto93Bonjour

      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
    4. @VaucluseBonjour 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