Microsoft 365 Diff entre Array et Formule

  • Initiateur de la discussion Initiateur de la discussion iliess
  • 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 !

iliess

XLDnaute Occasionnel
bonjour
j'ai essaye de crée une clé apartir d'une plage Arr
j'ai essayé deux méthode la premiere par Array et la deuxième par formule
j'ai constaté que la macro par formule et rapide que Array

Svp comment je peux accélère la méthode Array
 
Dernière modification par un modérateur:
voici les deux codes
VB:
Sub Traitement_par_formule()
t = Timer
With Application
        '.Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
End With

Dim ShRaw As Worksheet
Dim LShRaw As Long
Dim Brr As Variant

'=============================================================
Set ShRaw = ThisWorkbook.Worksheets("Raw")
LShRaw = ShRaw.Cells(ShRaw.Rows.Count, 1).End(xlUp).row
Brr = ShRaw.Range("A2:H" & LShRaw)
'==================================================================================================================================
With ShRaw
      If .FilterMode Then .ShowAllData
      '.Range("I2:I" & LShRaw).ClearContents
      .Cells(1, "I") = "Clé"
      .Cells(2, "I").FormulaLocal = "=""445""&""_""&A2&""_""&C2&""_""&D2&""_""&F2&""_""&G2"
      .Cells(2, "I").AutoFill .Cells(2, "I").Resize(LShRaw - 1)
      .Cells(1, "I").Resize(LShRaw) = .Cells(1, "i").Resize(LShRaw).Value
End With

With Application
        '.Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
End With
MsgBox Timer - t

End Sub

VB:
Sub Traitement_par_Array()
t = Timer
With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
End With

Dim ShRaw As Worksheet
Dim LShRaw As Long
Dim Brr As Variant

'=============================================================
Set ShRaw = ThisWorkbook.Worksheets("Raw")
LShRaw = ShRaw.Cells(ShRaw.Rows.Count, 1).End(xlUp).row
Brr = ShRaw.Range("A2:H" & LShRaw)
'==================================================================================================================================

For i = LBound(Brr) To UBound(Brr)
Range("I" & i + 1).Value = "445" & "_" & Brr(i, 1) & "_" & Brr(i, 3) & "_" & Brr(i, 4) & "_" & Brr(i, 6) & "_" & Brr(i, 7)
Next i

With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
End With
MsgBox Timer - t
End Sub
 
Re
Une vidéo de ce que j'ai fait à partir d'une petite Macro

je n'ai pas vu ton Post #17
Donc je concatène sans séparateur et toutes les colonnes dans mon exemple ! (je passe par Un tableau)
je regarde ce que je peux améliorer Lol
Jean marie
 

Pièces jointes

  • Concatener-1.gif
    Concatener-1.gif
    272.5 KB · Affichages: 19
Bonjour le fil, le forum

@iliess , merci de consulter et de respecter la charte XLD notamment le point 1.1

Cordialement, @+

VB:
1.1 - Conformité RGPD

Tout message ou fichier déposé sur ce site ne doit pas comporter de données à caractère personnel contrevenant au RGPD (Réglement Général sur la Protection des Données).
Il convient pour cela d’anonymiser toutes les données permettant d’identifier directement ou indirectement une personne physique ou morale.
XLD ne saurait être tenu responsable au cas où un visiteur du site posterait des données non conformes à la législation en vigueur.
Si vous détectez une non conformité, merci d'alerter le webmaster de ce site en utilisant, dans le post concerné, le bouton "signaler" dédié ou en envoyant un courriel à l'adresse webmaster@excel-downloads.com, nous supprimerons les données dans les plus brefs délais.
 
Re
Bonsoir Bernard !
@iliess
ce que j'ai utilisé .
Voir à modifier le Nom de la Feuille qui contient la BDD.
VB:
Option Explicit
Option Base 1
Dim Tp
Dim T
Dim Lgn As Long
Dim Col As Byte
Dim StrConc$
Dim x As Long
Dim Tbl_Recap()
Public Sub Concatene()
With Application
      .Calculation = xlCalculationManual
      .EnableEvents = False
      .ScreenUpdating = False
End With
Tp = Timer
x = 0
T = Worksheets("Feuil1").UsedRange.Value 'On récupère la plage de données dans la feuille "Feuil1" à modifier

 For Lgn = 2 To UBound(T) 'Pour chaque ligne du tableau des Données
        x = x + 1 'on incremente la variable
       StrConc$ = "445" & "_" & T(Lgn, 1) & "_" & T(Lgn, 3) & "_" & T(Lgn, 4) & "_" & T(Lgn, 6) & "_" & T(Lgn, 7)
  ReDim Preserve Tbl_Recap(1 To x) 'On redimmensionne le tableau qui va servir
      Tbl_Recap(x) = StrConc  'On colle la variable qui représente la Ligne Concaténée
 'de support aux donnees Concaténées en fonction de Cette Plage
 Next Lgn 'Autre Ligne
 With Worksheets("Feuil1") 'avec la feuille
'      .Range("I2").Resize(.UsedRange.Rows.Count).ClearContents 'On efface la Colonne "I"
      .Range("I2").Resize(UBound(Tbl_Recap, 1), 1) = Application.Transpose(Tbl_Recap) 'On redimensionne la longueur de la plage qui va recevoir les données du tableau
      .Columns("I:I").AutoFit 'On redimmensionne la Largeur de la colonne "I"
 End With
  StrConc = Empty 'On vide la variable qui va contenir la Ligne concaténée
  Erase Tbl_Recap 'On vide le tableau temporaire
 MsgBox Timer - Tp
 With Application
      .Calculation = xlCalculationAutomatic
      .EnableEvents = True
      .ScreenUpdating = True
End With
End Sub
Jean marie
 
- 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
8
Affichages
172
Réponses
40
Affichages
1 K
Retour