macro longue à s'executer

nrdz83

XLDnaute Impliqué
Bonsoir à tous peut être une amélioration à apporter à ce code ?
Voila c'est un userform avec des données saisie via dtpicker et textbox et qui se range dans des tableaux en fonction du mois choisi , ce code fonctionne trés bien mais il m'est bien 5 à 6 secondes avant de s'executer est ce normal ? ou il y a une amèlioration à apporter. Sur mon classeur j'ai d'autre smacros qui elles s'ex"cutent normalement .
D'avance merci à tous, mes amitiés

Private Sub CommandButton1_Click()
' Mise en place des valeurs saisies
Dim Mois As Byte

Mois = Month(DTPicker1)

With Sheets(Mois + 1)
DerLig = .Range("A65000").End(xlUp).Row + 1
.Cells(DerLig, 1) = DTPicker1
.Cells(DerLig, 2) = ComboBox1
.Cells(DerLig, 3) = TextBox3
.Cells(DerLig, 4) = TextBox4
.Cells(DerLig, 5) = TextBox1
.Cells(DerLig, 7) = ComboBox2
.Cells(DerLig, 8) = ComboBox3
.Cells(DerLig, 9) = ComboBox5
.Cells(DerLig, 10) = TextBox2
.Cells(DerLig, 11) = ComboBox4
.Cells(DerLig, 12) = ComboBox6
.Cells(DerLig, 13) = ComboBox7
.Cells(DerLig, 14) = ComboBox8
.Cells(DerLig, 15) = ComboBox9
.Cells(DerLig, 16) = ComboBox10
.Cells(DerLig, 17) = ComboBox11
.Cells(DerLig, 18) = ComboBox12
.Cells(DerLig, 19) = ComboBox13
.Cells(DerLig, 20) = ComboBox14
.Cells(DerLig, 21) = ComboBox15
End With
' On décharge le formulaire
Unload Me
End Sub
 

nrdz83

XLDnaute Impliqué
Re : macro longue à s'executer

bonjour roger je vais joindre le fameux fichier mais il est lourd en poids car il est dans sa phase final , le decalage par exemple, formulaire de saisie je saisie pour une plongée en janvier, et dans la feuille de janvier tout est décalé d'une colonne sur la droite la date se range dans la colonne lieux ect et ainsi de suite .
D'avance merci pour votre aide apporté à toi roger , gael ; kjin et les autre scar là je suis complétement largué par les codes .
Voici le fichier>> Cijoint.fr - Service gratuit de dépôt de fichiers

:cool:
 

Gael

XLDnaute Barbatruc
Re : macro longue à s'executer

Re,

J'ai fait un essai sur ton fichier, c'est bien ça. Rajoutes simplement l'instruction "Option base 1" qui demande moins de modifs et tout sera OK.

@+

Gael

Edit: et pour la question en MP, change la dimension de la table:

Dim tmp(22) as variant
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : macro longue à s'executer

Bonsoir nrdz83, le fil,

Bien la photo du toto, mais elle ne sert à rien sinon ajouter du poids à ton fichier....

Ensuite, et je suis en train de tester chacun de tes boutons... J'ai déjà une erreur sur le premier "Format... bibliothéque introuvable"... Je vais voir le reste ensuite.
 

nrdz83

XLDnaute Impliqué
Re : macro longue à s'executer

re bonsoir à tous jean pierre la photo c'etait uniquement a mettre un peu d'humour pour l'utilisateur du programme lol.
Voici mon code et rien ne s'affiche dans la colonne "Q" par contre ça se met dans la colonne "V"

HTML:
Private Sub CommandButton1_Click()
' Mise en place des valeurs saisies
Dim Mois As Byte, tmp(22) As Variant
Mois = Month(DTPicker1)
With Sheets(Mois + 1)
DerLig = .Range("A65000").End(xlUp).Row + 1
tmp(0) = DTPicker1
tmp(1) = ComboBox1
tmp(2) = TextBox3
tmp(3) = TextBox4
tmp(4) = TextBox1
tmp(5) = .Cells(DerLig, 6).FormulaR1C1  ' Nécessaire pour ne pas effacer le contenu de cette cellule.
tmp(6) = ComboBox2
tmp(7) = ComboBox3
tmp(8) = ComboBox5
tmp(9) = TextBox2
tmp(10) = ComboBox4
tmp(11) = ComboBox6
tmp(12) = ComboBox7
tmp(13) = ComboBox8
tmp(14) = ComboBox9
tmp(15) = ComboBox10
tmp(16) = ComboBox11
tmp(17) = ComboBox12
tmp(18) = ComboBox13
tmp(19) = ComboBox14
tmp(20) = ComboBox15
tmp(21) = ComboBox16
.Range(.Cells(DerLig, 1), .Cells(DerLig, 1).Offset(0, 21)).Value = tmp
End With
' On décharge le formulaire
Unload Me
End Sub


Par contre gael l'instruction que tu m'as donné (option base 1) tu le colles bien dans la feuille "thisworbook" et en dessous de option explicit ?
d'avance merci encore à tous
 

Gael

XLDnaute Barbatruc
Re : macro longue à s'executer

Re,

Attention, il faut choisir OU "Option base 1" OU décalage des index de la table.

Option base 1 se met dans le code du Userform au début:

Code:
Option Base 1
Private Sub CommandButton1_Click()
' Mise en place des valeurs saisies

Mais j'ai vu que tu as décalé les index donc cette option n'est pas nécessaire.

Pour la problème de la colonne vierge, tu as 21 colonnes à remplir, donc la table tmp ne doit contenir que 21 index, or on arrive à 22 :confused:

Si tu regardes bien ton userform, le combobox correspondant au plongeur 6 est doublé, il y a 2 combobox l'un au dessus de l'autre, ce sont les Combobox 11 (en dessous) et 16 (au dessus). Quand tu remplis l'USF tu ne remplis que celui du dessus, donc le 16 et le 11 reste toujours à blanc.

Lors de l'écriture des données tu écris une colonne de trop, c'est pourquoi tu as une valeur en colonne V et la colonne Q reste vierge puisque le combobox 11 n'est jamais rempli.

Supprime le combobox 16, remets la table tmp à 21 et tout rentrera dans l'ordre.

@+

Gael
 

nrdz83

XLDnaute Impliqué
Re : macro longue à s'executer

re bonsoir bien vu gael trop fort, j'ai rien vu ; le copier coller c'est bien mais des fois grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, tout ce temps perdu à tous pour ça, je vous remercie tous infiniement et vous souhaite une tyrés bonne fin de soirée mes amitiés :rolleyes:
 

Discussions similaires

Statistiques des forums

Discussions
312 482
Messages
2 088 766
Membres
103 955
dernier inscrit
mikaveli