VBA sur excel copy/past avec liaison

skolatshy Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
skolatshy Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voilà, dans le cadre de mon travail j'ai créé une macro qui recherche les données d'une feuille pour les copier à une autre feuille afin d'organiser toutes la base de données (c'est une base de données venant de MS Project)

Voilà ci-dessous le premier langage:

Sub Recherche_montage()
Dim j, i
i = 2
j = 4
While i < 6001
Application.StatusBar = "...............................Veuillez Patienter SVP Pendant La mise à Jour Des Données..............................." & "..................... " & i / 60 & " " & "%"
Sheets("Synthèse").Cells(14, 7) = i / 108600
If Sheets("Base de données").Cells(i, 6) = "EP3" Then
'code montage'
Sheets("Etudes").Cells(j, 2) = Sheets("Base de données").Cells(i, 4)
i = i + 1
j = j + 1
Else: i = i + 1
j = j
End If
Wend
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = False
Sheets("Synthèse").Cells(14, 7).ClearContents
End Sub

Cette macro est activée à l'aide d'un bouton, et elle ne recopie que les valeurs,
Je cherche en gros une autre formule afin que, en cas de modification de la base de données, je ne dois pas cliquer sur le bouton, car macro très lente et que la case concerné change automatiquement.
Merci d'avance

e
A voir également:

6 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

A quoi sert
Sheets("Synthèse").Cells(14, 7) = i / 108600

car elle est isolée dans le code : affectation de cette cellule avec cellules dépendante dans la feuille Excel?
comme je ne sais pas le pourquoi de cette affectation, il m'est difficile de te proposer une solution beaucoup + rapide

déjà dans ton code écris cette instruction au départ
application.screenupdating=false
ca ira nettement + vite
0
skolatshy Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour,

merci pour ta reponse.
pour cette ligne c'est juste un pourcentage en lien avec une autre macro qui sert à rien pour mon besoin tu peut l'oublier
Sheets("Synthèse").Cells(14, 7) = i / 108600
le code simplifié:

Sub Recherche_montage()

Dim j, i
i = 2
j = 4
While i < 6001
If Sheets("Base de données").Cells(i, 6) = "EP3" Then
'code montage'
Sheets("Etudes").Cells(j, 2) = Sheets("Base de données").Cells(i, 4)
i = i + 1
j = j + 1
Else: i = i + 1
j = j
End If
Wend
End Sub

mon objectif est que si jamais dans la feuille base de données on fait des modification, la feuille etudes change automatiquement.
et à quoi sert ?:
application.screenupdating=false

merci d'avance.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

Les modifs dans la base de données sont elles manuelles ?
si oui, quelles sont le type de modif: uniquement colonne 6 ou...?
au besoin, et en expliquant ce que tu veux faire
mettre un extrait du classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
en attendant tes précisions
macro de construction de la feuille "etudes" peut-^tre + rapide

Option Explicit 
Const Critere As String = "EP3" 

Sub filtrer_sur_ep3() 
Dim Derlig As Integer, Nbre As Integer, Lig As Integer, Cptr As Integer, tablo() 

     Application.ScreenUpdating = False 
     With Sheets("Base de données") 
          'initialisations 
          Derlig = .Columns("F").Find("*", , , , , xlPrevious).Row 
          Nbre = Application.CountIf(.Columns("F"), Critere) 
          If Nbre = 0 Then GoTo erreur 
          'recherche des EP3 
          ReDim tablo(1 To Nbre) 
          Lig = 1 
          For Cptr = 1 To Nbre 
               Lig = .Columns("F").Find(Critere, .Cells(Lig, "F"), xlValues).Row 
               tablo(Cptr) = .Cells(Lig, "D") 
          Next 
     End With 
     'restitutions 
     With Sheets("Etudes") 
          .Range("B4:B6500").ClearContents 
          .Range("B4").Resize(Nbre, 1) = Application.Transpose(tablo) 
          .Activate 
     End With 
      
     Exit Sub 
erreur: 
     MsgBox "aucun EP3 dans la colonne", vbCritical 
End Sub
0
skolatshy Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

pour mieux expliquer mon besoin,
dans la feuille base de données j'ai des informations venant de Ms project(logiciel de planning) avec une copy/paste avec liaison texte, donc les changement seront faite sur Ms project,
une tache (une ligne sur excel) comporte 15 sous tache dont EP3 fait partie, moi je cherche à organiser et regrouper quelques information de la Ligne EP3.
voici le lien pour voir un exemple:

https://www.cjoint.com/?BEyjWr58ZfP

le but et non seulement de recuperer une colonne, mais remplir la feuille etudes que si dans la colone 6 on a EP3.
la feuille etude et normalement vide.
et mon objectif final sera que si j'ai des modif de date ou peu importe dans Ms project donc dans la feuille de base de données ca se fasse automatiquement dans la feuille d'etude.

Merci d'avance.
0
skolatshy Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

pour mieux expliquer mon besoin,
dans la feuille base de données j'ai des informations venant de Ms project(logiciel de planning) avec une copy/paste avec liaison texte, donc les changement seront faite sur Ms project,
une tache (une ligne sur excel) comporte 15 sous tache dont EP3 fait partie, moi je cherche à organiser et regrouper quelques information de la Ligne EP3.
voici le lien pour voir un exemple:

https://www.cjoint.com/?BEyjWr58ZfP

le but et non seulement de recuperer une colonne, mais remplir la feuille etudes que si dans la colone 6 on a EP3.
la feuille etude et normalement vide.
et mon objectif final sera que si j'ai des modif de date ou peu importe dans Ms project donc dans la feuille de base de données ca se fasse automatiquement dans la feuille d'etude.

Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
1°/Tu es bien gentil mais ta première demande est différente de ton dernier post !!! :-/ j'ai bossé bénévolement pour rien

2°/ ta disposition des colonnes dans la feuille est différente de la feuille "base de données": si je comprend bien, il faut que je regarde quelle colonne de la base est située dans études: très très sympa de ta part :-//

3°/ dans un pot je te conseille une instruction pour aller + vite
ta réaction en réponse
et à quoi sert ?:
application.screenupdating=false

:-///

Donc, je perds confiance dans tes prescriptions et réactions et j'abandonne le suivi.
Michel
0
skolatshy Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
DESOLE VRAIMENT!!!
j'ai du mal exprimer mon besoin,
merci en tout cas, et desolé encore une fois :(
0