XL 2010 Simplification Code VBA

  • Initiateur de la discussion Initiateur de la discussion Kael_88
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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:
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
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
347
Réponses
5
Affichages
616
Réponses
4
Affichages
480
Réponses
8
Affichages
244
Réponses
4
Affichages
630
Retour