Macro sur 1 million de lignes: "excel ne répond pas"
TOT127
Messages postés
898
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis entrain de faire tourner cette macro sur excel:
Autant dire que ça ne se fait pas en 2minutes. Mac dit qu'excel ne répond pas.
A noter que sur les O colonnes, j'en ai au moins 10 avec du texte assez long.
Pendant que j'écrivais ce message j'ai eu l'erreur 6: "dépassement des capacités".
Qu'en pensez vous ?
Merci beaucoup (j'aurai souvent ce problème).
Aya
Je suis entrain de faire tourner cette macro sur excel:
Sub Uppercase()
' Loop to cycle through each cell in the specified range.
For Each x In Range("A1:O836307")
' Change the text in the range to uppercase letters.
x.Value = UCase(x.value)
Next
End Sub
Autant dire que ça ne se fait pas en 2minutes. Mac dit qu'excel ne répond pas.
A noter que sur les O colonnes, j'en ai au moins 10 avec du texte assez long.
Pendant que j'écrivais ce message j'ai eu l'erreur 6: "dépassement des capacités".
Qu'en pensez vous ?
Merci beaucoup (j'aurai souvent ce problème).
Aya
A voir également:
- Macro sur 1 million de lignes: "excel ne répond pas"
- Difference million milliard - Accueil - Technologies
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Partage de photos en ligne - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
2 réponses
Bonjour,
15 colonnes = 15 millions de cellules !!! Déraisonnable
Il faut limiter au strict nécessaire : les seules cellules qui contienne un texte non issu de formules :
et comme tu travailles sur feuille tu peux ajouter au début :
Application.Screenupdating=False
eric
15 colonnes = 15 millions de cellules !!! Déraisonnable
Il faut limiter au strict nécessaire : les seules cellules qui contienne un texte non issu de formules :
Dim pl As Range, c As Range On Error Resume Next Set pl = [A:O].SpecialCells(xlCellTypeConstants, xlTextValues) On Error GoTo 0 If Not pl Is Nothing Then For Each c In pl Debug.Print c.Address ' ton traitement Next c End If End Sub
et comme tu travailles sur feuille tu peux ajouter au début :
Application.Screenupdating=False
eric
Je sais que c'est absurde tu as bien raison. :( Le problème c'est qu'on m'a envoyé ces données en excel. Après retraitement, je les mettrai sur stata (un logiciel de statistiques, notamment utile en épidémiologie etc) et ça devient des mini fichiers tout légers et rapides...mais entre temps, je dois faire ça.
Je viens d'essayer d'appliquer la macro, j'attends de voirr si ça marche. Elle est donc comme ça:
Le fait que je sois sur mac ne posera pas de problème ?
merci beaucoup!
Je viens d'essayer d'appliquer la macro, j'attends de voirr si ça marche. Elle est donc comme ça:
Sub macromaj()
Application.Screenupdating=False
Dim pl As Range, c As Range
On Error Resume Next
Set pl = [A:O].SpecialCells(xlCellTypeConstants, xlTextValues)
On Error GoTo 0
If Not pl Is Nothing Then
For Each c In pl
Debug.Print c.Address ' ton traitement
Next c
End If
End Sub
Le fait que je sois sur mac ne posera pas de problème ?
merci beaucoup!
Pour 3 colonnes :
PS : et si les cellules de tes 3 colonnes contiennent presque toutes des modif à faire il faudrait faire autrement pour qur ce soit presque instantané.
Est-ce le cas ?
Si oui est-ce uniquement des saisies ou y'a-t'il des formules dans les plages considérées ?
PS2 : si tu rentres dans ces critères :
pas sur à 100% pour Mac (?)
Sub macromaj() Dim pl As Range, c As Range Application.ScreenUpdating = False On Error Resume Next Set pl = Range("B:B,D:D,M:M").SpecialCells(xlCellTypeConstants, xlTextValues) On Error GoTo 0 If Not pl Is Nothing Then For Each c In pl Debug.Print c.Address ' ton traitement Next c End If End Sub
PS : et si les cellules de tes 3 colonnes contiennent presque toutes des modif à faire il faudrait faire autrement pour qur ce soit presque instantané.
Est-ce le cas ?
Si oui est-ce uniquement des saisies ou y'a-t'il des formules dans les plages considérées ?
PS2 : si tu rentres dans ces critères :
Sub macromaj() Dim cols, col As Long, lig As Long, nblig As Long, datas cols = Array(2, 4, 15) ' mettre les colonnes concernées For col = 0 To UBound(cols) nblig = Cells(Rows.Count, cols(col)).End(xlUp).Row - 1 datas = Cells(2, cols(col)).Resize(nblig).Value For lig = 1 To nblig If Not IsNumeric(datas(lig, 1)) Then datas(lig, 1) = UCase(datas(lig, 1)) Next lig Cells(2, cols(col)).Resize(nblig, 1) = datas Next col End Sub
pas sur à 100% pour Mac (?)
j'ia excel 2011 pour mac
où dois je insérer qc du type "MonResultat = CLong(MaVar) * MaVar1" dans la macro?