Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

2007 & VBa : recopie dans une colonne aprés un filtre

1 réponse
Avatar
le Nordiste
Bonsoir,


J'ai un tableau de donn=E9es A1:AA16000, par exemple
Je filtre sur une valeur de la colonne F par exemple.
Je place dans la premi=E8re cellule visible de la colonne P une
=E9quation.
Je veux recopier cette =E9quation que dans les cellules visibles de la
colonne P .
Et tout cela en VB

Je n'y arrive pas mais avec votre aide surement,
avec mes remerciements anticip=E9s.


Le Nordiste

1 réponse

Avatar
michdenis
Bonjour,

Un exemple de macro :

La macro fait appel à la méthode "SpecialCells" d'un objet "Range".
Lorsque l'on travaille sur une grande plage de cellules, cette dernière
à une limite et cela dépend du nombre de plages de cellules qui ne
sont pas adjacentes.
Pour contourner cette limite, j'ai présenté une variable "Pas" qui sert
à déterminer le nombre de ligne que la méthode "SpecialCells" travaillera
à chaque boucle.
Comme je ne connais pas cette limite de façon précise, J'ai utilisé au hasard
le chiffre 1000. Si ça t'intéresse, tu pourrais faire des tests avec différentes
valeurs de "Pas"....
Tu dois adapter le nom de la feuille à 2 endroits dans la procédure.

'-------------------------------------------------
Sub test()
Dim DerLig As Long, A As Long
Dim Rg As Range, Nb As Long, Pas As Integer
Dim R As Range, ModCalcul As String, T As Long
ModCalcul = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Pas = 1000

With Worksheets("Feuil1") 'nom feuille à adapter
'Dernière ligne occupée dans la feuille.
DerLig = .Range("A:AA").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set Rg = .Range("F1:F" & DerLig)
'Nombre de lignes
T = Rg.Rows.Count
'Nb = Nombre de boucles
Nb = Application.Ceiling(T / Pas, 1)
End With

With Rg
'application du filtre sur la colonne F:F
.AutoFilter field:=1, Criteria1:="toto1"
End With
'Se place sur la première ligne en P2
'répondant au critère du filtre pour la formule
Set Rg = Rg.Offset(1, 10).Resize(1)

'y insère la formule désirée
Rg.Formula = "=" & Rg.Address(0, 0)
On Error Resume Next
'boucle sur toute la colonne P
For A = 1 To Nb
If Rg(Rg.Rows.Count).Row + Pas > T Then
Pas = T - Rg(Rg.Rows.Count).Row
End If
Set R = Rg(Rg.Rows.Count + 1, 1).Resize(Pas)
Set Rg = R
With R.SpecialCells(xlCellTypeVisible)
'Copie de la formule.
.Formula = "=" & R(1).Address(0, 0)
End With
Next
'Affiche toutes les données
Worksheets("Feuil1").ShowAllData
Application.Calculation = ModCalcul
Application.ScreenUpdating = True
End Sub
'-------------------------------------------------


MichD
--------------------------------------------
"le Nordiste" a écrit dans le message de groupe de discussion :


Bonsoir,


J'ai un tableau de données A1:AA16000, par exemple
Je filtre sur une valeur de la colonne F par exemple.
Je place dans la première cellule visible de la colonne P une
équation.
Je veux recopier cette équation que dans les cellules visibles de la
colonne P .
Et tout cela en VB

Je n'y arrive pas mais avec votre aide surement,
avec mes remerciements anticipés.


Le Nordiste