Vba incrémentation
Résolu/Fermé
dolcevita01
-
20 juin 2012 à 15:54
dolcevita01 Messages postés 4 Date d'inscription vendredi 25 mai 2012 Statut Membre Dernière intervention 21 juin 2012 - 21 juin 2012 à 10:54
dolcevita01 Messages postés 4 Date d'inscription vendredi 25 mai 2012 Statut Membre Dernière intervention 21 juin 2012 - 21 juin 2012 à 10:54
A voir également:
- Incrémenter vba
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba dépassement de capacité ✓ - Forum Excel
3 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 20/06/2012 à 18:14
Modifié par michel_m le 20/06/2012 à 18:14
Bonjour
Excusez l'incruste
Vu le nombre de cellule à traiter (110x 140 =15400), il est préférable de travailler en mémoire RAM avec des variables- tableaux et non sur la feuille pour effectuer les traitements (gain de temps considérable)
proposition de macro
Michel
Excusez l'incruste
Vu le nombre de cellule à traiter (110x 140 =15400), il est préférable de travailler en mémoire RAM avec des variables- tableaux et non sur la feuille pour effectuer les traitements (gain de temps considérable)
proposition de macro
Sub ecrire_texte() Dim Lig As Integer, Col As Integer, Derlig As Integer Dim T_in(), C_lig As Byte, C_col As Byte, T_out() Dim Texte As String 'initialisations Application.ScreenUpdating = False Lig = ActiveCell.Row Col = ActiveCell.Column Derlig = Columns(Col).Find("*", , , , , xlPrevious).Row T_in = Range(Cells(Lig, Col), Cells(Derlig, Col + 109)).Value ReDim T_out(1 To Derlig - Lig + 1) 'traitement du texte en RAM For C_lig = 1 To UBound(T_in) Texte = "" For C_col = 1 To 110 If T_in(C_lig, C_col) <> "" Then Texte = Texte & " " & T_in(C_lig, C_col) & "," Next ' données traitées T_out(C_lig) = Texte Next 'restitution Cells(Lig, Col + 121).Resize(UBound(T_out), 1) = Application.Transpose(T_out) End Sub
Michel
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
20 juin 2012 à 16:15
20 juin 2012 à 16:15
Est ce que tu as déclarer les variables texte, cellule...
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
20 juin 2012 à 16:30
20 juin 2012 à 16:30
Ou se trouve exactement le problème?
mon problème se situe au niveau de l'incrémentation, cad que la macro ci dessus ne permet pas de prendre en compte toutes les lignes et ne fonctionne que ligne par ligne. Ce qui est assez long lorsque j'ai 140 lignes. Voilà pourquoi je cherche à la modifier pour pouvoir exécuter qu'une seule fois la macro.
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
20 juin 2012 à 17:00
20 juin 2012 à 17:00
Dim texte As String Dim a As Integer For a = 1 To 120 If Cells(1, a) <> "" Then texte = texte & Cells(1, a).Value End If Next a Cells(2, 1) = texte
21 juin 2012 à 10:54