XL 2010 Simplification Code VBA

Kael_88

XLDnaute Occasionnel
Le forum,

Après plusieurs recherche non fructueuse, je me tourne vers vous.
Serait-il possible de simplifier ce code ?

VB:
    Dim C As Range, G As Range, Rng As Range, Derl As Long
         Set Rng = Range("C2", Range("C65000").End(xlUp))    '.Select Colonne C
         Set Rng1 = Range("G2", Range("G65000").End(xlUp))    '.Select Colonne G
         Derl = Rng.Rows.Count + 1

'Ajout valeur dans Colonne D par rapport à Colonne C
    For Each C In Rng
        C.Offset(, 1).Value = "*Ter " & C.Value & "*" 
    Next

'Ajout valeur dans Colonne H par rapport à Colonne G
    For Each G In Rng1
        G.Offset(, 1).Value = "*" & G.Value & " Ni*" 
    Next

Cordialement
 

Roland_M

XLDnaute Barbatruc
Bonsoir,

ben il n'y a pas grand chose à simplifier !?

peut être:
Dim C As Range, G As Range
'Ajout valeur dans Colonne D par rapport à Colonne C
For Each C In Range("C2", Range("C65000").End(xlUp))
C.Offset(, 1).Value = "*Ter " & C.Value & "*"
Next
'Ajout valeur dans Colonne H par rapport à Colonne G
For Each G In Range("G2", Range("G65000").End(xlUp))
G.Offset(, 1).Value = "*" & G.Value & " Ni*"
Next
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Plus simple, je ne sais pas, plus rapide surement :
VB:
'Ajout valeur dans Colonne D par rapport à Colonne C
With Range("C2", Range("C65000").End(xlUp)).Offset(, 1)
   .FormulaR1C1 = "=""*Ter ""&RC[-1]&""*"""
   .Value = .Value: End With
'Ajout valeur dans Colonne H par rapport à Colonne G
With Range("G2", Range("G65000").End(xlUp)).Offset(, 1)
   .FormulaR1C1 = "=""*""&RC[-1]&"" Ni*"""
   .Value = .Value: End With
 
Dernière édition:

Kael_88

XLDnaute Occasionnel
Le forum, @Roland_M ,@Dranreb ,

Comment expliquer :
Mon tableau ne fait que 150 lignes et 12 Colonnes, donc la rapidité n'est pas une priorité.
Tu proposes de passer par des formules, cela me gène un peu car, on rencontre souvent un problème lors de l'adaptation à un autre code.
et pour finir je demande si on peut simplifier, pas refaire.

Merci quand même.

Cordialement
 

Dranreb

XLDnaute Barbatruc
Mais quel est le vrai but ? On ne peut pas simplifier les expressions affectées, elles sont déjà aussi simple que possible. Tout ce qu'on peut faire d'autre c'est seulement éviter d'accéder aux cellules une par une en travaillant avec des tableaux VBA.
 

Dranreb

XLDnaute Barbatruc
Si c'est un problème de répétition de nombreuses séquences analogues, on peut aussi s'écrire des procédures paramétrées, pour simplifier à l’extrême dans la procédure appelante. Comme ça par exemple :
VB:
Sub Main()
   'Ajout valeur dans Colonne D par rapport à Colonne C
   ConcatSpc [D2], "*Ter ", [C2], "*"
   'Ajout valeur dans Colonne H par rapport à Colonne G
   ConcatSpc [H2], "*", [G2], " Ni*"
   End Sub
Sub ConcatSpc(ByVal CelCbl As Range, ByVal Devant As String, ByVal CelSrc As Range, ByVal Derrière As String)
   Dim T(), L As Long
   With CelSrc.Worksheet.UsedRange: T = CelSrc.Resize(.Row + .Rows.Count - CelSrc.Row).Value: End With
   For L = 1 To UBound(T, 1): T(L, 1) = Devant & T(L, 1) & Derrière: Next L
   CelCbl.Resize(UBound(T, 1)).Value = T
   End Sub
 

Discussions similaires

Réponses
1
Affichages
119

Statistiques des forums

Discussions
311 711
Messages
2 081 783
Membres
101 817
dernier inscrit
carvajal