2 bonnes questions !

arnaoke

XLDnaute Occasionnel
Bonjour,

2 questions à vous soumettre :

1- existe t il une taille de fichier excel au dela de laquelle le fichier a du mal à se lancer ?
j'ai codé un fichier de 20Mo plus ou moins, et il met maintenant plus de 5 min à s'ouvrir ... assez pénalisant quand on sait que celui ci est destiné à un usage industriel !

2- dans un tout autre registre, (mais même fichier) je suis censé utiliser la fonction Find pour récupérer une ligne dans un autre onglet, en gros ma demarche est celle ci :

Boucle For, variable "ligne"
je prend le contenu de la celulle dans C,ligne , et je le recherche dans une autre feuille à l'aide de la fonction Find.
Je récupère le numero de la ligne, puis je compare la donnée contenue dans la celulle X avec une autre données.

seulement .... ça merde, à l'étape ou je dois récuperer la numéro de la ligne, voici mon code :

Code:
With Sheets("Suivi avenants MQ")
    For ligne2 = 8 To .Range("C8").End(xlDown).Row
        numContrat = .Range("C" & ligne).Value 'valeur de la case ("C" & ligne) stocké dans numContrat
        Set resultatLigne = Sheets("traitementGestion").Range("C2:C" & .Range("C2").End(xlDown).Row).Find(numContrat, LookAt:=xlWhole) 'recherche numContrat de suivi des MQ, dans traitementGestion
        msgbox "toto !dfg"
        ligneTraitementGestion = resultatLigne.Row

le compilateur bug donc à la dernière ligne, il ne veut aparement pas du tout de mon "resultatLigne.Row" ....

des idées, pour récupérer la ligne trouver par mon "Find" ?
 

flyonets44

XLDnaute Occasionnel
Re : 2 bonnes questions !

Bonjour
1-Tu peux essayer de faire maigrir ton fichier avec le code suivant; à lancer 2 fois de suite.
de préférence éviter tous les formatages personnalisés qui font enfler les fichiers, ainsi que les
insertions et suppressions de feuille. Si tu n'es pas obligé de stocker des formules ne garde que les valeurs.

Sub Cleaning()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim myLastRow As Long, myLastCol As Long
Dim Wks As Worksheet
Dim dummyRng As Range
'For Each Wks In ActiveWorkbook.Worksheets
Set Wks = ActiveSheet
With Wks
myLastRow = ActiveSheet.UsedRange.Rows.Count
myLastCol = ActiveSheet.UsedRange.Columns.Count
Set dummyRng = ActiveSheet.UsedRange
On Error Resume Next
myLastRow = _
Wks.Cells.Find("*", after:=.Cells(1), _
LookIn:=xlFormulas, lookat:=xlWhole, _
searchdirection:=xlPrevious, _
searchorder:=xlByRows).Row
Debug.Print myLastRow
myLastCol = _
Wks.Cells.Find("*", after:=.Cells(1), _
LookIn:=xlFormulas, lookat:=xlWhole, _
searchdirection:=xlPrevious, _
searchorder:=xlByColumns).Column
Debug.Print myLastCol
On Error GoTo 0
If myLastRow * myLastCol = 0 Then
.Columns.Delete
Else
Wks.Range(Cells(myLastRow + 1, 1), _
.Cells(Rows.Count, 1)).EntireRow.Delete
Wks.Range(.Cells(1, myLastCol + 1), _
.Cells(1, .Columns.Count)).EntireColumn.Delete
End If
End With
'Next Wks
set Wks =nothing
Application.Calculation = xlCalculationAutomatic
End Sub

2-une fonction pour trouver la ligne
Function FindRow(ByVal MatchVal As long)
Dim Lastrow As Integer, mRow As Integer, Matchrng As Range, c As Variant
With Worksheets(1)
Lastrow = .Cells(Rows.Count, "B").End(xlUp).Row
Set Matchrng = .Range("b2:B" & Lastrow) ' à adapter
Set c = Matchrng.Find(MatchVal, LookIn:=xlValues) ' à adapter
If c Is Nothing Then
MsgBox MatchVal & " not found"
FindRow = 0
Else
FindRow = c.Row
End If
End With
Set Matchrng =nothing
End Function
Cordialement
Flyonets
 

arnaoke

XLDnaute Occasionnel
Re : 2 bonnes questions !

Bonjour à vous 2,

Merci pour vos réponses, mais malheuresement, le code d'amincissement supprime la moitié de mes colonnes, et le .ROW en moins n'est toujours pas la solution :(

je commence à déséspéré, 2 semaines que je bosse dessus, ça fait beaucoup ;/

Pour ce qui est du code qui permet de trouver la ligne, je ne l'ai pas encore testé, car je cherche déjà a innover à partir de mon propre code ;)

d'autres idées :( ?
 

MJ13

XLDnaute Barbatruc
Re : 2 bonnes questions !

Bonjour à tous

1- existe t il une taille de fichier excel au dela de laquelle le fichier a du mal à se lancer ?
j'ai codé un fichier de 20Mo plus ou moins, et il met maintenant plus de 5 min à s'ouvrir ... assez pénalisant quand on sait que celui ci est destiné à un usage industriel !

Je ne répondrai qu'à la première, vu que la seconde question est trop flou sans support fichier.

5 min pour ouvrir un fcihier de 17 mo, c'est beaucoup trop avec une configuration normale. Après, sans savoir ce qu'il y a dedans (formules, valeurs brutes, macros événementielles, objets), c'est quand même pas facile de trouver ue solution :confused:
 

Discussions similaires

Réponses
2
Affichages
175

Statistiques des forums

Discussions
312 471
Messages
2 088 703
Membres
103 927
dernier inscrit
Mkeal