Hello la communauté.
Toujours dans l'aide pour un ami qui fait des Quizz.
Je souhaite faire l'export (Bouton export choix) des données de la feuille "Base" a "Choix", si il y a des numéros (1 a 7) dans la colonne "O", avec un test du nombre de questions par numéro (Il sera entrée en dure dans une variable).
Comme je l'ai fait pour une autre partie de cette appli :
'On Renseigne le Nombre de choix par thèmes
NbChoixTheme1 = 10
NbChoixTheme2 = 10
NbChoixTheme3 = 10
NbChoixTheme4 = 10
NbChoixTheme5 = 10
NbChoixTheme6 = 15
'NbChoixTheme7 = 0
'NbChoixTheme8 = 0
Dans le module : Mdl_ExportChoix
Le soucis premier est le temps d'exécution (Environ 30 secondes) et a la base la feuille "Base" a Mini 10300 Lignes.
Y'a t'il moyen d'optimiser cela?
Et je souhaiterai que les formules des plages en oranges (Qui ne bougeront jamais), c'est figé comme cela, s'exportent aussi, car la je me retrouve avec des "ref" perdues?
Je sais qu'il y'a des traitements lourdingue avec la feuille "Base", mais je ne sais pas faire autrement.
Sur ces deux procédures dans :
Y'a t'il moyen d'optimiser cela?
Je vous remercie par avance pour toute l'aide apportée.
Bonne soirée.
G'Claire
Toujours dans l'aide pour un ami qui fait des Quizz.
Je souhaite faire l'export (Bouton export choix) des données de la feuille "Base" a "Choix", si il y a des numéros (1 a 7) dans la colonne "O", avec un test du nombre de questions par numéro (Il sera entrée en dure dans une variable).
Comme je l'ai fait pour une autre partie de cette appli :
'On Renseigne le Nombre de choix par thèmes
NbChoixTheme1 = 10
NbChoixTheme2 = 10
NbChoixTheme3 = 10
NbChoixTheme4 = 10
NbChoixTheme5 = 10
NbChoixTheme6 = 15
'NbChoixTheme7 = 0
'NbChoixTheme8 = 0
Dans le module : Mdl_ExportChoix
VB:
Sub ExportChoix()
Dim wsBase As Worksheet
Dim wsChoix As Worksheet
Dim lastRowBase As Long, lastRowChoix As Long, i As Long, j As Long
' Spécifier les feuilles de calcul
Set wsBase = ThisWorkbook.Sheets("Base")
Set wsChoix = ThisWorkbook.Sheets("Choix")
' Trouver la dernière ligne dans la colonne O de la feuille "Base"
lastRowBase = wsBase.Cells(wsBase.Rows.count, "O").End(xlUp).Row
' Supprimer les lignes de A5 à la dernière ligne dans les colonnes A à AB
wsChoix.Range("A5:AB" & lastRowBase).Delete
' Réinitialiser le compteur de lignes pour la feuille "Choix"
lastRowChoix = 5
' Parcourir la colonne "O" à partir de la ligne 5 jusqu'à la dernière ligne de la feuille "Base"
For i = 5 To lastRowBase
' Vérifier si la valeur dans la colonne "O" est égale à 0, 1, 2, 3, 4, 5 ou 6
If wsBase.Cells(i, "O").Value >= "1" And wsBase.Cells(i, "O").Value <= "7" Then
' Copier la plage de cellules de A:O dans la feuille "Base" vers la feuille "Choix"
wsBase.Range("A" & i & ":O" & i).Copy Destination:=wsChoix.Range("A" & lastRowChoix)
lastRowChoix = lastRowChoix + 1 ' Incrémenter le compteur de lignes pour la feuille "Choix"
End If
Next i
' Si aucune ligne n'est copiée, afficher un message
If lastRowChoix = 5 Then
MsgBox "Aucun choix n'a été effectué.", vbInformation
Else
MsgBox "Export de " & (lastRowChoix - 5) & " choix effectué.", vbInformation
End If
AppliquerFormule_Choix
End Sub
Le soucis premier est le temps d'exécution (Environ 30 secondes) et a la base la feuille "Base" a Mini 10300 Lignes.
Y'a t'il moyen d'optimiser cela?
Et je souhaiterai que les formules des plages en oranges (Qui ne bougeront jamais), c'est figé comme cela, s'exportent aussi, car la je me retrouve avec des "ref" perdues?
Je sais qu'il y'a des traitements lourdingue avec la feuille "Base", mais je ne sais pas faire autrement.
Sur ces deux procédures dans :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
AppliquerCouleur
ColoriserSelonK_Base
End Sub
Y'a t'il moyen d'optimiser cela?
Je vous remercie par avance pour toute l'aide apportée.
Bonne soirée.
G'Claire