Bonjour,
Je vous transmets un code qui permet de copier-coller dans des cellules filtrées d'une plage contenant des cellules masquées.
Pourriez-vous, s’il vous plaît, l’améliorer ou le modifier afin de le rendre plus rapide et performant, sachant que ma plage de données est très étendue ?
Je vous remercie par avance pour votre aide.
Cordialement.
Je vous transmets un code qui permet de copier-coller dans des cellules filtrées d'une plage contenant des cellules masquées.
Pourriez-vous, s’il vous plaît, l’améliorer ou le modifier afin de le rendre plus rapide et performant, sachant que ma plage de données est très étendue ?
Je vous remercie par avance pour votre aide.
Cordialement.
VB:
Sub RemplirDictionnaireVisible()
Dim Disco1 As Object ' Déclare un objet dictionnaire
Dim Cellule As Range ' Déclare une variable pour chaque cellule dans la plage
Dim Plage As Range ' Déclare la plage de cellules à parcourir
' Créer un objet dictionnaire
Set Disco1 = CreateObject("Scripting.Dictionary")
' Définir la plage de cellules à analyser
Set Plage = Range("C2:C19") ' Plage de A1 à A20
' Parcourir chaque cellule de la plage
For Each Cellule In Plage
' Vérifier si la cellule est visible (pas masquée)
If Not Cellule.EntireRow.Hidden And Not Cellule.EntireColumn.Hidden Then
' Ajouter au dictionnaire : clé = adresse de la cellule, valeur = contenu de la cellule
Disco1(Cellule.Address) = Cellule.Value
End If
Next Cellule
' Définir la nouvelle colonne (par exemple colonne B)
NouvelleColonne = "A"
For Each Cle In Disco1.Keys
' Extraire uniquement le numéro de ligne de l'adresse
Dim Ligne As String
Ligne = Replace(Cle, "$", "") ' Enlever les signes "$" pour garder "A1"
Ligne = Mid(Ligne, 2) ' Garder uniquement la partie ligne après la lettre de la colonne
' Construire l'adresse avec la nouvelle colonne
Range(NouvelleColonne & Ligne).Value = Disco1(Cle)
Next Cle
' Libérer le dictionnaire
Set Disco1 = Nothing
End Sub