Optimisation d'un code VBA
azertyh
Messages postés
131
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'aimerais optimiser le code suivant :
J'aimerais saisir dans des boîtes de dialogue :
- les onglets à copier ("02", "03", etc).
- le champ (L25:O33).
- le numéro de ligne à copier (5 dans le code Worksheets(B).Cells(5, A.Column)).
- le numéro de colonne à copier (3 dans le code Worksheets(B).Cells(A.Row, 3)).
Merci d'avance.
Si vous trouvez d'autres optimisations, je suis prenant.
j'aimerais optimiser le code suivant :
Sub tableaucroisé_en_liste()
'
' tableaucroisé_en_liste Macro
' transforme un tableau croisé en une liste de données
'
'
'i = numéro de ligne où commence la liste de données - la ligne 1 étant l'en-tête.
i = 2
'B = nom des onglets à copier.
For Each B In Array("02", "03", "41", "Sema", "NBM", "Malto")
'A = une cellule dans les onglets à copier.
'RANGE A MODIFIER.
For Each A In Worksheets(B).Range("L25:O33")
Worksheets("data").Cells(i, 1).Value = Worksheets(B).Cells(5, A.Column)
'Copie la colonne L (qui s'incrémente à chaque boucle), ligne 5 dans l'onglet B vers colonne 1, ligne i dans l'onglet data.
Worksheets("data").Cells(i, 2).Value = Worksheets(B).Cells(A.Row, 3)
'Copie la colonne C, ligne 25 (qui s'incrémente à chaque boucle) dans l'onglet B vers colonne 2, ligne i dans l'onglet data.
Worksheets("data").Cells(i, 3).Value = Worksheets(B).Cells(A.Row, A.Column)
Worksheets("data").Cells(i, 4).Value = B
i = i + 1
Next A
Next B
End Sub
J'aimerais saisir dans des boîtes de dialogue :
- les onglets à copier ("02", "03", etc).
- le champ (L25:O33).
- le numéro de ligne à copier (5 dans le code Worksheets(B).Cells(5, A.Column)).
- le numéro de colonne à copier (3 dans le code Worksheets(B).Cells(A.Row, 3)).
Merci d'avance.
Si vous trouvez d'autres optimisations, je suis prenant.
A voir également:
- Optimisation d'un code VBA
- Optimisation pc - Accueil - Utilitaires
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
3 réponses
Bonjour,
Ce n'est pas de l'optimsation mais du parametrage de recuperation.
Pourquoi parametrer sur un programme complet ??
Ce n'est pas de l'optimsation mais du parametrage de recuperation.
Pourquoi parametrer sur un programme complet ??
bonsoir,
après moult recherches, j'ai ce code :
le problème est que ce code s'applique à toutes les feuilles du classeur alors que dans l'idéal, je sélectionne les feuilles à copier (disons Jan, Fév, Mar), je lance le macro, et je n'ai que les données de ces 3 feuilles dans ma feuille "data".
après moult recherches, j'ai ce code :
Sub boite_saisie()
'
' boite_saisie Macro
'
'
' Sheets(Array("Jan", "Fév", "Mar", "déc", "nov")).Select
Dim B As Worksheet
i = 2
C = Application.InputBox("Entrez la sélection à copier")
For Each B In ActiveWorkbook.Worksheets
B.Select False
For Each A In B.Range(C)
Worksheets("data").Cells(i, 1).Value = B.Cells(1, A.Column)
Worksheets("data").Cells(i, 2).Value = B.Cells(A.Row, 1)
Worksheets("data").Cells(i, 3).Value = B.Cells(A.Row, A.Column)
Worksheets("data").Cells(i, 4).Value = B.Name
i = i + 1
Next A
Next B
End Sub
le problème est que ce code s'applique à toutes les feuilles du classeur alors que dans l'idéal, je sélectionne les feuilles à copier (disons Jan, Fév, Mar), je lance le macro, et je n'ai que les données de ces 3 feuilles dans ma feuille "data".
Bonjour
exemple (xl2000) pour sélectionner des données (ici, mois) par cliquer-glisser (drag and drop) d'une listbox à une autre
http://www.cjoint.com/c/FAxhwfO2rUj
exemple (xl2000) pour sélectionner des données (ici, mois) par cliquer-glisser (drag and drop) d'une listbox à une autre
http://www.cjoint.com/c/FAxhwfO2rUj
Ensuite par "paramétrer les transferts de données (L25....) de chaque mois
change le code du bouton valider en
et pour vérifier
a toi de jouer avec les transferts:
pour faciliter la maintenance change 'i" par "Lig" et "A" par "Cellule"
et commencer ton code par figer le défilement de l'écran et déclarer tes variables
change le code du bouton valider en
Private Sub Btn_valider_Click()
Dim Cptr As Byte
With Lbx_arrive
For Cptr = 0 To .ListCount - 1
Call tamacro(.List(Cptr))
Next Cptr
End With
et pour vérifier
Sub tamacro(onglet)
MsgBox onglet
End Sub
a toi de jouer avec les transferts:
pour faciliter la maintenance change 'i" par "Lig" et "A" par "Cellule"
et commencer ton code par figer le défilement de l'écran et déclarer tes variables
Application.screenupdating=false