Vba incrémentation
Résolu
dolcevita01
-
dolcevita01 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
dolcevita01 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerais améliorer une macro en incrémentant les cellules concernant la concaténation de variables.
Voilà mon code :
Texte = ""
For Each Cellule In Range(Selection, Selection.Offset(0, 110))
If Cellule.Value <> "" Then
Texte = Texte & " " & Cellule.Value & ","
End If
Next Cellule
Cells(ActiveCell.Row, 121).Formula = Texte
'Passe à la ligne suivante
Selection.Offset(1, 0).Select
J'ai tout essayé, du Do en passant par for, rien n'y fait.
Pouvez-vous m'aider svp
j'aimerais améliorer une macro en incrémentant les cellules concernant la concaténation de variables.
Voilà mon code :
Texte = ""
For Each Cellule In Range(Selection, Selection.Offset(0, 110))
If Cellule.Value <> "" Then
Texte = Texte & " " & Cellule.Value & ","
End If
Next Cellule
Cells(ActiveCell.Row, 121).Formula = Texte
'Passe à la ligne suivante
Selection.Offset(1, 0).Select
J'ai tout essayé, du Do en passant par for, rien n'y fait.
Pouvez-vous m'aider svp
3 réponses
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
dolcevita01
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
Merci beaucoup Michel!!! le code est nikel, c'est exactement ce dont j'avais besoin =) You're a Geniuuus =)
Est ce que tu as déclarer les variables texte, cellule...
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.