Re : gérer un grand tableau avec ARRAY
Bonjour à tous
Merci beaucoup à tous pour ces réponses.
Effectivement, il y avait des erreurs dans mon code et je n'en ai mis qu'une partie (jeune papa manquant un peu de sommeil mais heureux !!)
Le but était d'accélérer le temps de traitement car voici le code en entier sur le bouton valider :
*****************************
Private Sub valider_devis_Click()
Dim Cell As Range
Application.ScreenUpdating = False
Sheets("ListeDevis").Select
If Sheets("devis").Range("montantht") <> "" Then
Sheets("ListeDevis").Select
'se positionner sur la 1ére cellule vide
Dim Ligne As Long
Ligne = ActiveSheet.Range("A65536").End(xlUp).Row
ActiveSheet.Cells(Ligne + 1, 1).Select
Application.StatusBar = "Veuillez patienter...Calculs en cours. Merci."
ActiveCell.Value = Range("code_devis").Value
ActiveCell.Offset(0, 1).Value = Range("code_dossier_devis").Value
ActiveCell.Offset(0, 2).Value = Range("code_client_devis").Value
ActiveCell.Offset(0, 3).Value = Range("date_devis").Value
ActiveCell.Offset(0, 4).Value = Range("genre_client").Value
ActiveCell.Offset(0, 5).Value = Range("prenom_client").Value
ActiveCell.Offset(0, 6).Value = Range("nom_client").Value
ActiveCell.Offset(0, 7).Value = Range("date_chargement").Value
ActiveCell.Offset(0, 8).Value = Range("adresse1_chargement").Value
ActiveCell.Offset(0, 9).Value = Range("adresse2_chargement").Value
ActiveCell.Offset(0, 10).Value = Range("CP_chargement").Value
ActiveCell.Offset(0, 11).Value = Range("ville_chargement").Value
ActiveCell.Offset(0, 12).Value = Range("pays_chargement").Value
ActiveCell.Offset(0, 13).Value = Range("tel_chargement").Value
ActiveCell.Offset(0, 14).Value = Range("fax_chargement").Value
ActiveCell.Offset(0, 15).Value = Range("etage_chargement").Value
ActiveCell.Offset(0, 16).Value = Range("asc_chargement").Value
ActiveCell.Offset(0, 17).Value = Range("mm_chargement").Value
ActiveCell.Offset(0, 18).Value = Range("fenetre_chargement").Value
ActiveCell.Offset(0, 19).Value = Range("transbo_chargement").Value
ActiveCell.Offset(0, 20).Value = Range("date_livraison").Value
ActiveCell.Offset(0, 21).Value = Range("adresse1_livraison").Value
ActiveCell.Offset(0, 22).Value = Range("adresse2_livraison").Value
ActiveCell.Offset(0, 23).Value = Range("CP_livraison").Value
ActiveCell.Offset(0, 24).Value = Range("ville_livraison").Value
ActiveCell.Offset(0, 25).Value = Range("pays_livraison").Value
ActiveCell.Offset(0, 26).Value = Range("tel_livraison").Value
ActiveCell.Offset(0, 27).Value = Range("fax_livraison").Value
ActiveCell.Offset(0, 28).Value = Range("etage_livraison").Value
ActiveCell.Offset(0, 29).Value = Range("asc_livraison").Value
ActiveCell.Offset(0, 30).Value = Range("mm_livraison").Value
ActiveCell.Offset(0, 31).Value = Range("fenetre_livraison").Value
ActiveCell.Offset(0, 32).Value = Range("transbo_livraison").Value
ActiveCell.Offset(0, 33).Value = Range("presta_emballages").Value
ActiveCell.Offset(0, 34).Value = Range("presta_fragiles").Value
ActiveCell.Offset(0, 35).Value = Range("presta_penderies").Value
ActiveCell.Offset(0, 36).Value = Range("presta_linge").Value
ActiveCell.Offset(0, 37).Value = Range("presta_livres").Value
ActiveCell.Offset(0, 38).Value = Range("presta_tableaux").Value
ActiveCell.Offset(0, 39).Value = Range("presta_sommiers").Value
ActiveCell.Offset(0, 40).Value = Range("presta_demontage").Value
ActiveCell.Offset(0, 41).Value = Range("presta_meubles").Value
ActiveCell.Offset(0, 42).Value = Range("presta_fourgon").Value
ActiveCell.Offset(0, 43).Value = Range("presta_distance").Value
ActiveCell.Offset(0, 44).Value = Range("presta_type_voyage").Value
ActiveCell.Offset(0, 45).Value = Range("presta_stationnement").Value
ActiveCell.Offset(0, 46).Value = Range("presta_remisesol").Value
ActiveCell.Offset(0, 47).Value = Range("presta_remontage").Value
ActiveCell.Offset(0, 48).Value = Range("presta_debalvaisselle").Value
ActiveCell.Offset(0, 49).Value = Range("presta_deballinge").Value
ActiveCell.Offset(0, 50).Value = text_option.Value
ActiveCell.Offset(0, 51).Value = Range("valeur_globale_mobilier").Value
ActiveCell.Offset(0, 52).Value = Range("valeur_max_objet").Value
ActiveCell.Offset(0, 53).Value = Range("limite_responsabilite").Value
ActiveCell.Offset(0, 54).Value = Range("volume").Value
ActiveCell.Offset(0, 55).Value = Range("visiteur").Value
ActiveCell.Offset(0, 56).Value = Range("montantHT").Value
ActiveCell.Offset(0, 57).Value = Range("montant_garantie").Value
ActiveCell.Offset(0, 58).Value = Range("total_ht").Value
ActiveCell.Offset(0, 59).Value = Range("montant_tva").Value
ActiveCell.Offset(0, 60).Value = Range("total_TTC").Value
ActiveCell.Offset(0, 61).Value = Range("tx_commande").Value
ActiveCell.Offset(0, 62).Value = Range("montant_commande").Value
ActiveCell.Offset(0, 63).Value = Range("tx_livraison").Value
ActiveCell.Offset(0, 64).Value = Range("montant_livraison").Value
ActiveCell.Offset(0, 65).Value = Range("adresse1_chgt2").Value
ActiveCell.Offset(0, 66).Value = Range("adresse2_chgt2").Value
ActiveCell.Offset(0, 67).Value = Range("CP_chgt2").Value
ActiveCell.Offset(0, 68).Value = Range("ville_chgt2").Value
ActiveCell.Offset(0, 69).Value = Range("pays_chgt2").Value
ActiveCell.Offset(0, 70).Value = Range("adresse1_livr2").Value
ActiveCell.Offset(0, 71).Value = Range("adresse2_livr2").Value
ActiveCell.Offset(0, 72).Value = Range("CP_livr2").Value
ActiveCell.Offset(0, 73).Value = Range("ville_livr2").Value
ActiveCell.Offset(0, 74).Value = Range("pays_livr2").Value
Application.StatusBar = False
'on augmente de 1 le prochain code devis
Sheets("form").Range("next_code_devis").Value = Sheets("form").Range("next_code_devis").Value + 1
'Application.ScreenUpdating = True
enregistrer 'macro pour enregistrer le devis dans un autre classeur
deproteger_devis ' macro pour repermettre la modification de certaines cellules
'on vide la feuille devis
Sheets("devis").Select
Range("f27:f35").Value = "OUI"
Range("N30:N34").Value = "OUI"
Range("valeur_globale_mobilier").Value = "0"
Range("valeur_max_objet").Value = "0"
Range("presta_fourgon").Value = "OUI"
Range("presta_distance").Value = "0"
Range("presta_type_voyage").Value = "Urbain"
Range("limite_responsabilite").Value = "457"
Sheets("accueil").Select
MsgBox "Devis enregistré sous :" & Chr(10) & Nomfichier & ".xls"
Else
MsgBox "Veuillez saisir un montant pour le devis"
Sheets("devis").Select
Range("montantht").Select
Exit Sub
End If
End Sub
*************************
donc voila pourquoi cela prend un temps phénoménal de traitement et qu'une petite boucle serait la bienvenue.
En tous cas, je teste toutes vos idées et vos préconisations
Bonne journée !!
damien