Copier plage de données en fonction d'une condition

Bonjour à tous,

J'ai actuellement 2 fichiers Excels :

  • Le fichier A : Liste de données avec coordonnées x, y et z.
  • Le fichier B : Macro permettant d'écrire dans SolidWorks (logiciel de conception 3D).

Problème :

J'aimerais copier/coller des données du fichier A au fichier B suivant le processus suivant :

1. Tester valeur de Z dans la colonne C du fichier A.

2. Sélectionner les colonnes A, B et C pour des valeurs de Z identiques (que celles égales à 0, puis que celles égales 0,05,...) -> 200 lignes à chaque fois.

3. Copier ces valeurs dans le fichier B

4. Exécuter la macro "Private Sub btnLines_Click()" du fichier B.

5. Accorder un délais de 5 secondes pour le temps de traitement de la macro du fichier B.

6. Renouveler l'opération.

J'ai un début de code mais il me manque de quoi tester la valeur et attendre...

Sub Copier_desiner()

' Copie valeur fichier A vers fichier B. Exécute la macro du fichier B. Attend 10 secondes.

    Range("A1:C200").Select
    Selection.Copy
    Windows("trace_des_points_sur_un_part__xyz_v3.xls").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A201").Select
    Application.CutCopyMode = False

End Sub

Merci d'avance pour votre aide !

Les fichiers sont joint.

8fichier-a.xlsm (376.46 Ko)

Bonjour,

Pour le délai d'attente, tu peux essayer ce code. A placer dans un module.

Sub Attendre(Secondes As Single)
' Cette procédure temporise pendant le nombre de secondes qu'on lui transmet en argument
Dim Début As Long, Fin As Long, Chrono As Long
Début = Timer
Fin = Début + Secondes
Do Until Timer >= Fin
    DoEvents
Loop
End Sub

Dans ton code principal, place l'appel de la sub avec 10 (pour 10 secondes). A placer au bon endroit. Pour le moment je l'ai placer en fin de ton code principal.

Cordialement

' Copie valeur fichier A vers fichier B. Exécute la macro du fichier B. Attend 10 secondes.

Range("A1:C200").Select

Selection.Copy

Windows("trace_des_points_sur_un_part__xyz_v3.xls").Activate

Range("A1").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Range("A201").Select

Application.CutCopyMode = False

Attendre 10

End Sub

Merci beaucoup pour ta réponse !

Je vais tester demain pour le timer, je te tiens au courant !

Salut,

Merci le code fonctionne très bien !

As-tu une idée de fonctions que je peux utiliser pour réaliser l'autre partie de mon problème ? Car je sèche un peu...

Merci,

Bonsoir,

J'ai des soucis sur les ouvertures et fermetures de classeurs avec la version 2016.

Je pense qu'il est préférable que tu relances un nouveau sujet. Désolé de ne pouvoir t'accompagner plus.

Cordialement,

Merci pour ta réponse.

Je vais encore continuer de chercher de mon côté et sinon je relancerais un sujet !

Je vais m'orienter vers une méthode du style AdvancedFilter de l'objet Range.

Rechercher des sujets similaires à "copier plage donnees fonction condition"