Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro
qui me copie les valeurs d'une colonne en comparrant les codes de 2
classeurs distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30
ou 50 econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier
Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises
dans les 2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) > PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro
qui me copie les valeurs d'une colonne en comparrant les codes de 2
classeurs distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30
ou 50 econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier
Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises
dans les 2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) > PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro
qui me copie les valeurs d'une colonne en comparrant les codes de 2
classeurs distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30
ou 50 econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier
Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises
dans les 2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) > PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Bonjour, *DOS SANTOS JOAQUIM*
Cela fait près de 137 000 boucles...
30 secondes, c'est vite passé, non ?
--
Bien amicordialement,
P. BastardSalut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro
qui me copie les valeurs d'une colonne en comparrant les codes de 2
classeurs distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30
ou 50 econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier
Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises
dans les 2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) > > PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Bonjour, *DOS SANTOS JOAQUIM*
Cela fait près de 137 000 boucles...
30 secondes, c'est vite passé, non ?
--
Bien amicordialement,
P. Bastard
Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro
qui me copie les valeurs d'une colonne en comparrant les codes de 2
classeurs distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30
ou 50 econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier
Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises
dans les 2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) > > PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Bonjour, *DOS SANTOS JOAQUIM*
Cela fait près de 137 000 boucles...
30 secondes, c'est vite passé, non ?
--
Bien amicordialement,
P. BastardSalut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro
qui me copie les valeurs d'une colonne en comparrant les codes de 2
classeurs distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30
ou 50 econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier
Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises
dans les 2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) > > PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut,
Tu pourrais essayer avec la fonction Find qui est assez rapide.
Bien sûr, il te faut faire au moins une boucle. À toi de savoir si tu peux
la faire à l'inverse et utiliser celle qui a 317 lignes.
Ça donnerait quelque chose comme ceci. Il ne reste qu'à modifier les noms
des classeurs 2 et 3 et adapter au besoin.
Avec les mêmes chiffres comme code dans les 2 fichiers (pour être certain
qu'ils soient trouvés), ça prend 1 ou 2 secondes pour terminer, du moins ici
avec un Celeron 1.7 mghz /512 megs de RAM
Sub gestion()
'Déclaration des variables globales
Dim Plagecodecommand As Range
Dim Plageventecommand As Range
Dim ii As Integer
Dim Recherche, Adresse
'Plagecode définit les plages contentant les codes des marchandises dans
les 2 feuilles de calcul
Set Plagecodecommand =
Workbooks("Classeur2").ActiveSheet.Range("C11:C443")
Set Plageventecommand =
Workbooks("Classeur2").ActiveSheet.Range("I11:I443")
For ii = 1 To 432
Set Recherche =
Workbooks("Classeur3").ActiveSheet.Range("A10:A327").Find(Plagecodecommand(ii))
If Not Recherche Is Nothing Then
Adresse= Recherche.Address ' Ici c'est l'adresse du code trouvé
If Plagecodecommand(ii) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse) Then
Plagecodecommand(ii).Offset(0, 6) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse).Offset(0, 7)
End If
End If
Next
MsgBox "Terminé"
End Sub
MichelSalut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut,
Tu pourrais essayer avec la fonction Find qui est assez rapide.
Bien sûr, il te faut faire au moins une boucle. À toi de savoir si tu peux
la faire à l'inverse et utiliser celle qui a 317 lignes.
Ça donnerait quelque chose comme ceci. Il ne reste qu'à modifier les noms
des classeurs 2 et 3 et adapter au besoin.
Avec les mêmes chiffres comme code dans les 2 fichiers (pour être certain
qu'ils soient trouvés), ça prend 1 ou 2 secondes pour terminer, du moins ici
avec un Celeron 1.7 mghz /512 megs de RAM
Sub gestion()
'Déclaration des variables globales
Dim Plagecodecommand As Range
Dim Plageventecommand As Range
Dim ii As Integer
Dim Recherche, Adresse
'Plagecode définit les plages contentant les codes des marchandises dans
les 2 feuilles de calcul
Set Plagecodecommand =
Workbooks("Classeur2").ActiveSheet.Range("C11:C443")
Set Plageventecommand =
Workbooks("Classeur2").ActiveSheet.Range("I11:I443")
For ii = 1 To 432
Set Recherche =
Workbooks("Classeur3").ActiveSheet.Range("A10:A327").Find(Plagecodecommand(ii))
If Not Recherche Is Nothing Then
Adresse= Recherche.Address ' Ici c'est l'adresse du code trouvé
If Plagecodecommand(ii) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse) Then
Plagecodecommand(ii).Offset(0, 6) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse).Offset(0, 7)
End If
End If
Next
MsgBox "Terminé"
End Sub
Michel
Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut,
Tu pourrais essayer avec la fonction Find qui est assez rapide.
Bien sûr, il te faut faire au moins une boucle. À toi de savoir si tu peux
la faire à l'inverse et utiliser celle qui a 317 lignes.
Ça donnerait quelque chose comme ceci. Il ne reste qu'à modifier les noms
des classeurs 2 et 3 et adapter au besoin.
Avec les mêmes chiffres comme code dans les 2 fichiers (pour être certain
qu'ils soient trouvés), ça prend 1 ou 2 secondes pour terminer, du moins ici
avec un Celeron 1.7 mghz /512 megs de RAM
Sub gestion()
'Déclaration des variables globales
Dim Plagecodecommand As Range
Dim Plageventecommand As Range
Dim ii As Integer
Dim Recherche, Adresse
'Plagecode définit les plages contentant les codes des marchandises dans
les 2 feuilles de calcul
Set Plagecodecommand =
Workbooks("Classeur2").ActiveSheet.Range("C11:C443")
Set Plageventecommand =
Workbooks("Classeur2").ActiveSheet.Range("I11:I443")
For ii = 1 To 432
Set Recherche =
Workbooks("Classeur3").ActiveSheet.Range("A10:A327").Find(Plagecodecommand(ii))
If Not Recherche Is Nothing Then
Adresse= Recherche.Address ' Ici c'est l'adresse du code trouvé
If Plagecodecommand(ii) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse) Then
Plagecodecommand(ii).Offset(0, 6) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse).Offset(0, 7)
End If
End If
Next
MsgBox "Terminé"
End Sub
MichelSalut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut MPi,
L'idée est trés interressante.
mais lorsque je change une valeur dans le premier classeur, je ne l'a
retrouve pas dans le second classeur apres avoir lancé la macro
Pourquoi ?
"MPi" wrote:Salut,
Tu pourrais essayer avec la fonction Find qui est assez rapide.
Bien sûr, il te faut faire au moins une boucle. À toi de savoir si tu peux
la faire à l'inverse et utiliser celle qui a 317 lignes.
Ça donnerait quelque chose comme ceci. Il ne reste qu'à modifier les noms
des classeurs 2 et 3 et adapter au besoin.
Avec les mêmes chiffres comme code dans les 2 fichiers (pour être certain
qu'ils soient trouvés), ça prend 1 ou 2 secondes pour terminer, du moins ici
avec un Celeron 1.7 mghz /512 megs de RAM
Sub gestion()
'Déclaration des variables globales
Dim Plagecodecommand As Range
Dim Plageventecommand As Range
Dim ii As Integer
Dim Recherche, Adresse
'Plagecode définit les plages contentant les codes des marchandises dans
les 2 feuilles de calcul
Set Plagecodecommand =
Workbooks("Classeur2").ActiveSheet.Range("C11:C443")
Set Plageventecommand =
Workbooks("Classeur2").ActiveSheet.Range("I11:I443")
For ii = 1 To 432
Set Recherche =
Workbooks("Classeur3").ActiveSheet.Range("A10:A327").Find(Plagecodecommand(ii))
If Not Recherche Is Nothing Then
Adresse= Recherche.Address ' Ici c'est l'adresse du code trouvé
If Plagecodecommand(ii) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse) Then
Plagecodecommand(ii).Offset(0, 6) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse).Offset(0, 7)
End If
End If
Next
MsgBox "Terminé"
End Sub
MichelSalut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut MPi,
L'idée est trés interressante.
mais lorsque je change une valeur dans le premier classeur, je ne l'a
retrouve pas dans le second classeur apres avoir lancé la macro
Pourquoi ?
"MPi" wrote:
Salut,
Tu pourrais essayer avec la fonction Find qui est assez rapide.
Bien sûr, il te faut faire au moins une boucle. À toi de savoir si tu peux
la faire à l'inverse et utiliser celle qui a 317 lignes.
Ça donnerait quelque chose comme ceci. Il ne reste qu'à modifier les noms
des classeurs 2 et 3 et adapter au besoin.
Avec les mêmes chiffres comme code dans les 2 fichiers (pour être certain
qu'ils soient trouvés), ça prend 1 ou 2 secondes pour terminer, du moins ici
avec un Celeron 1.7 mghz /512 megs de RAM
Sub gestion()
'Déclaration des variables globales
Dim Plagecodecommand As Range
Dim Plageventecommand As Range
Dim ii As Integer
Dim Recherche, Adresse
'Plagecode définit les plages contentant les codes des marchandises dans
les 2 feuilles de calcul
Set Plagecodecommand =
Workbooks("Classeur2").ActiveSheet.Range("C11:C443")
Set Plageventecommand =
Workbooks("Classeur2").ActiveSheet.Range("I11:I443")
For ii = 1 To 432
Set Recherche =
Workbooks("Classeur3").ActiveSheet.Range("A10:A327").Find(Plagecodecommand(ii))
If Not Recherche Is Nothing Then
Adresse= Recherche.Address ' Ici c'est l'adresse du code trouvé
If Plagecodecommand(ii) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse) Then
Plagecodecommand(ii).Offset(0, 6) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse).Offset(0, 7)
End If
End If
Next
MsgBox "Terminé"
End Sub
Michel
Salut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub
Salut MPi,
L'idée est trés interressante.
mais lorsque je change une valeur dans le premier classeur, je ne l'a
retrouve pas dans le second classeur apres avoir lancé la macro
Pourquoi ?
"MPi" wrote:Salut,
Tu pourrais essayer avec la fonction Find qui est assez rapide.
Bien sûr, il te faut faire au moins une boucle. À toi de savoir si tu peux
la faire à l'inverse et utiliser celle qui a 317 lignes.
Ça donnerait quelque chose comme ceci. Il ne reste qu'à modifier les noms
des classeurs 2 et 3 et adapter au besoin.
Avec les mêmes chiffres comme code dans les 2 fichiers (pour être certain
qu'ils soient trouvés), ça prend 1 ou 2 secondes pour terminer, du moins ici
avec un Celeron 1.7 mghz /512 megs de RAM
Sub gestion()
'Déclaration des variables globales
Dim Plagecodecommand As Range
Dim Plageventecommand As Range
Dim ii As Integer
Dim Recherche, Adresse
'Plagecode définit les plages contentant les codes des marchandises dans
les 2 feuilles de calcul
Set Plagecodecommand =
Workbooks("Classeur2").ActiveSheet.Range("C11:C443")
Set Plageventecommand =
Workbooks("Classeur2").ActiveSheet.Range("I11:I443")
For ii = 1 To 432
Set Recherche =
Workbooks("Classeur3").ActiveSheet.Range("A10:A327").Find(Plagecodecommand(ii))
If Not Recherche Is Nothing Then
Adresse= Recherche.Address ' Ici c'est l'adresse du code trouvé
If Plagecodecommand(ii) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse) Then
Plagecodecommand(ii).Offset(0, 6) =
Workbooks("Classeur3").ActiveSheet.Range(Adresse).Offset(0, 7)
End If
End If
Next
MsgBox "Terminé"
End Sub
MichelSalut le forum,
Après quelques nuits blanches, j'ai enfin réussi à pondre une macro qui me
copie les valeurs d'une colonne en comparrant les codes de 2 classeurs
distincts.
Mais le probléme est que la macro m'affiche un résulat au bout de 30 ou 50
econde suivant le fichier PControl
Comment faire pour simplifier ou accélérer la macro
A+ le forum
la macro:
Sub gestion()
'
' gestion Macro
' Macro enregistrée le 21/07/2005 par DOS SANTOS Joaquim
'
' Touche de raccourci du clavier: Ctrl+m
'
Application.Goto Reference:="gestion"
'Déclaration des variables globales
Dim app2Excel As Excel.Application 'Application Excel
Dim Pcontrol As Excel.Workbook 'Classeur Excel
Dim PcontrolSheet As Excel.Worksheet 'Feuille Excel
Dim Plagecodecommand As Range
Dim PlagecodePcontrol As Range
Dim PlageventePcontrol As Range
Dim Plageventecommand As Range
'Ouverture de l'application
Set app2Excel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set Pcontrol = app2Excel.Workbooks.Open("C:Documents and
SettingsZimour.TOSMONOTEBureaumargePControl.xls")
'PcontrolShhet correspond à la première feuille du fichier Pcontrol.xls
Set PcontrolSheet = Pcontrol.Worksheets(1)
Set Sheet = ActiveWorkbook.ActiveSheet
'Plagecode définit les plages contentant les codes des marchandises dans les
2 feuilles de calcul
Set Plagecodecommand = ActiveSheet.Range("C11:C443")
Set Plageventecommand = ActiveSheet.Range("I11:I443")
Set PlagecodePcontrol = PcontrolSheet.Range("A10:A327")
Set PlageventePcontrol = PcontrolSheet.Range("G10:G327")
'Déclaration des variables locales
Dim ii As Integer
Dim jj As Integer
Dim Vente As Single
Dim codePcourant As Integer
Dim codeCcourant As Integer
Dim indicecodePcontrol As Integer
Dim longueur As Integer
For ii = 1 To 432
codeCcourant = Plagecodecommand(ii)
For jj = 1 To 317
codePcourant = PlagecodePcontrol(jj)
If codeCcourant = codePcourant Then Plageventecommand(ii) =
PlageventePcontrol(jj)
Next jj
Next ii
Pcontrol.Close
End Sub