Macro sur 1 million de lignes: "excel ne répond pas"
Fermé
TOT127
Messages postés
898
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
7 août 2018
-
Modifié par TOT127 le 10/08/2016 à 12:30
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 10 août 2016 à 23:33
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 10 août 2016 à 23:33
A voir également:
- Macro sur 1 million de lignes: "excel ne répond pas"
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro recorder - Télécharger - Confidentialité
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
2 réponses
Ant049
Messages postés
154
Date d'inscription
jeudi 4 août 2016
Statut
Membre
Dernière intervention
9 septembre 2016
22
10 août 2016 à 12:15
10 août 2016 à 12:15
Bonjour,
Sous quelle version d'Excel est enregistrée ton fichier ?
Sous quelle version d'Excel est enregistrée ton fichier ?
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 214
10 août 2016 à 13:17
10 août 2016 à 13:17
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
TOT127
Messages postés
898
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
7 août 2018
95
10 août 2016 à 14:34
10 août 2016 à 14:34
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!
TOT127
Messages postés
898
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
7 août 2018
95
10 août 2016 à 15:00
10 août 2016 à 15:00
NB: en fait dans mon fichier, il n'y a des minuscules qu'en colonne B D et M. Et dans l'autre que en M.
Comment modifier la macro pour qu'il bosse que sur ça ?
Comment modifier la macro pour qu'il bosse que sur ça ?
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 214
Modifié par eriiic le 10/08/2016 à 17:05
Modifié par eriiic le 10/08/2016 à 17:05
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 (?)
TOT127
Messages postés
898
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
7 août 2018
95
Modifié par TOT127 le 10/08/2016 à 17:54
Modifié par TOT127 le 10/08/2016 à 17:54
Bonjour,
Aucune des celules de ma base n'a de formules, par contre, dans les colonnes concernées, l'intégralité de la colonne est à mettre en majuscule en effet.
JE vais essayer!
Juste une question: une macro comme ça va durer combien de temps ? Et comment savoir quand elle a fini ?
merci
Aucune des celules de ma base n'a de formules, par contre, dans les colonnes concernées, l'intégralité de la colonne est à mettre en majuscule en effet.
JE vais essayer!
Juste une question: une macro comme ça va durer combien de temps ? Et comment savoir quand elle a fini ?
merci
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 214
Modifié par eriiic le 10/08/2016 à 18:15
Modifié par eriiic le 10/08/2016 à 18:15
Quand tu n'as plus le sablier c'est fini.
La 2nde possibilité sera très rapide, peut-être moins d'1 s.
La 2nde possibilité sera très rapide, peut-être moins d'1 s.
10 août 2016 à 12:22
j'ia excel 2011 pour mac
10 août 2016 à 12:23
10 août 2016 à 12:59
Modifié par TOT127 le 10/08/2016 à 14:35
où dois je insérer qc du type "MonResultat = CLong(MaVar) * MaVar1" dans la macro?