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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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
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
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.
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.
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.