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

variable tableau

3 réponses
Avatar
DesseJ
Bonjour, Bonsoir,

Pour satisfaire ma curiosit=E9 et peut-=EAtre booster les temps de
r=E9ponses des traitements, est-il possible, svp, dans une variable
tableau de supprimer des enregistrements selon une condition (=E0
d=E9terminer selon les cas) avant de restaurer les donn=E9es sur la
feuille de calcul ?

Par exemple, j'ai une liste de noms tri=E9s alphanum=E9riquement de la
cellule A1 =E0 A7. Certains sont en double. Avec ce bout de macro, je
r=E9cup=E8re bien les noms sans doublons dans ma colonne B mais avec des
cellules vides =E0 la place des doublons (ce qui est normal). Comment
faire pour ne pas obtenir ces cellules ?

Merci d'avance
Steph D.

Sub test()
Dim Tabl
Dim i As Double
ReDim Tabl(1 To 7, 1 To 1)
Tabl =3D Range("A1:A7").Value
For i =3D LBound(Tabl) + 1 To UBound(Tabl)
If Tabl(i, 1) =3D Tabl(i - 1, 1) Then Tabl(i, 1) =3D Empty
Next i
Range("B1:B7") =3D Tabl
End Sub

3 réponses

Avatar
JB
Bonjour,

Je ne suis pas sûr que l'utilisation de tableau dans ce cas soit une
bonne opportun:


Dim temp()
ReDim temp(1 To 8, 1 To 1)
i = 1
For Each c In [a2:a8]
If IsError(Application.Match(c, temp, 0)) Then
temp(i, 1) = c
i = i + 1
End If
Next c
[B2:B8] = temp

Cordialement JB




Bonjour, Bonsoir,

Pour satisfaire ma curiosité et peut-être booster les temps de
réponses des traitements, est-il possible, svp, dans une variable
tableau de supprimer des enregistrements selon une condition (à
déterminer selon les cas) avant de restaurer les données sur la
feuille de calcul ?

Par exemple, j'ai une liste de noms triés alphanumériquement de la
cellule A1 à A7. Certains sont en double. Avec ce bout de macro, je
récupère bien les noms sans doublons dans ma colonne B mais avec des
cellules vides à la place des doublons (ce qui est normal). Comment
faire pour ne pas obtenir ces cellules ?

Merci d'avance
Steph D.

Sub test()
Dim Tabl
Dim i As Double
ReDim Tabl(1 To 7, 1 To 1)
Tabl = Range("A1:A7").Value
For i = LBound(Tabl) + 1 To UBound(Tabl)
If Tabl(i, 1) = Tabl(i - 1, 1) Then Tabl(i, 1) = Empty
Next i
Range("B1:B7") = Tabl
End Sub


Avatar
JB
qq exemples d'utilisation de tableaux.

http://cjoint.com/?ikvVbmpZ4j

JB

Bonjour, Bonsoir,

Pour satisfaire ma curiosité et peut-être booster les temps de
réponses des traitements, est-il possible, svp, dans une variable
tableau de supprimer des enregistrements selon une condition (à
déterminer selon les cas) avant de restaurer les données sur la
feuille de calcul ?

Par exemple, j'ai une liste de noms triés alphanumériquement de la
cellule A1 à A7. Certains sont en double. Avec ce bout de macro, je
récupère bien les noms sans doublons dans ma colonne B mais avec des
cellules vides à la place des doublons (ce qui est normal). Comment
faire pour ne pas obtenir ces cellules ?

Merci d'avance
Steph D.

Sub test()
Dim Tabl
Dim i As Double
ReDim Tabl(1 To 7, 1 To 1)
Tabl = Range("A1:A7").Value
For i = LBound(Tabl) + 1 To UBound(Tabl)
If Tabl(i, 1) = Tabl(i - 1, 1) Then Tabl(i, 1) = Empty
Next i
Range("B1:B7") = Tabl
End Sub


Avatar
DesseJ
Merci JB pour tes exemples de tableaux que j'avais capturés sur
excelabo et qui m'ont donné des idées pour optimiser le temps de
certaines de mes macros.

Dans l'idée, je me demandais s'il était plus judicieux pour traiter
une liste et supprimer certains enregistrements jugés "inutiles" selon
une ou plusieurs conditions, de passer par un tableau pour travailler
cette liste et la renvoyer traitée dans une feuille, ou par une
classique boucle sur la feuille avec les if qui vont bien.

Par ex, une liste de personnes avec plusieurs enregistrements par
personne correspondant à leur différents contrats de travail, et ne
garder que le contrat de travail par personne le plus récent.
Actuellement, je trie la liste par personne puis par date
(décroissant), et je boucle en partant de la fin de la liste en
supprimant les contrats les plus anciens par personne. La boucle me
donne des temps de réponses tout à fait acceptable mais j'imaginais
qu'une boucle dans un tableau intermédiaire serait encore plus rapide
;o))))

Ecore merci pour ta réponse et surtout pour les classeurs
intéressants et explicites que tu nous livre.

Bonne soirée ou journée
Steph D.