Recopie excel avec condition

Résolu/Fermé
roberto93 Messages postés 14 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 7 juillet 2008 - 27 juin 2008 à 16:03
roberto93 Messages postés 14 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 7 juillet 2008 - 1 juil. 2008 à 16:50
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
A voir également:

1 réponse

slylele Messages postés 19 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2008 5
27 juin 2008 à 16:40
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
roberto93 Messages postés 14 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 7 juillet 2008
30 juin 2008 à 15:38
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
roberto93 Messages postés 14 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 7 juillet 2008 > roberto93 Messages postés 14 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 7 juillet 2008
30 juin 2008 à 17:05
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414 > roberto93 Messages postés 14 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 7 juillet 2008
30 juin 2008 à 17:39
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
roberto93 Messages postés 14 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 7 juillet 2008 > Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022
1 juil. 2008 à 16:50
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