VBA - Modification de cellules visibles
Résolu
Valou Choc
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
A voir également:
- VBA - Modification de cellules visibles
- Suivi de modification word - Guide
- Logiciel gratuit modification pdf - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
Bonjour,
1- si tes cellules J1, J2, J3 etc jusqu'à la ligne précédent ton "Header" sont remplies, la ligne de ton header peut être définie comme ceci :
2- Pour résoudre ton problème, personnellement, je ne filtrerais pas la base de données. En fait, une boucle sur les données contenues en colonne J, avec un test si appartient au Array("ATHK", "DBUD", "HIUD", "OHFC", "POHF", "TFDJ", "MJNC", "PLSX", "TGUJ") alors on modifie la colonne I correspondante...
Pour te faire une démo, il faudrait connaitre au préalable le nombre de données à traiter...
Ton tableau comporte combien de lignes?
Note : pour le 1- on peux aisément remplacer J par A ou B ou...
--
Cordialement,
Franck P
1- si tes cellules J1, J2, J3 etc jusqu'à la ligne précédent ton "Header" sont remplies, la ligne de ton header peut être définie comme ceci :
Dim LigHeader As Long LigHeader = Range("J1").End(xlDown).Row + 2
2- Pour résoudre ton problème, personnellement, je ne filtrerais pas la base de données. En fait, une boucle sur les données contenues en colonne J, avec un test si appartient au Array("ATHK", "DBUD", "HIUD", "OHFC", "POHF", "TFDJ", "MJNC", "PLSX", "TGUJ") alors on modifie la colonne I correspondante...
Pour te faire une démo, il faudrait connaitre au préalable le nombre de données à traiter...
Ton tableau comporte combien de lignes?
Note : pour le 1- on peux aisément remplacer J par A ou B ou...
--
Cordialement,
Franck P
Super pour le header, je vais essayer ca merci.
Pour la boucle, j'ai environ 15 000 lignes dans mon tableau, ca peut etre une solution mais ce ne serait pas un peu long?
Pour la boucle, j'ai environ 15 000 lignes dans mon tableau, ca peut etre une solution mais ce ne serait pas un peu long?
Cette macro va te faire un test sur tes données. Si on trouve un élément de ton Array dans la colonne J, il va inscrire VRAI en Colonne X.
On remplacera plus tard le VRAI en colonne X par l'inscription de ce que tu veux en I.
Pour l'instant on va tester la vitesse d'exécution.
fais donc un test sur une copie de ton fichier et dis moi si le temps d'exécution te convient...
On remplacera plus tard le VRAI en colonne X par l'inscription de ce que tu veux en I.
Pour l'instant on va tester la vitesse d'exécution.
fais donc un test sur une copie de ton fichier et dis moi si le temps d'exécution te convient...
Sub test() Dim LigHeader As Long, DrLig As Long, Lig As Long, Lign As Long, Cpt As Integer Dim TablTri(), TablColJ() Dim t t = Timer 'on détermine la ligne du Header LigHeader = Range("J1").End(xlDown).Row + 3 'on détermine la toute dernière ligne saisie colonne J DrLig = Range("J" & Rows.Count).End(xlUp).Row 'On boucle entre ces 2 lignes For Lig = LigHeader To DrLig 'pour remplir une variable tableau (TablColJ) des données contenues colonne J ReDim Preserve TablColJ(Lign) TablColJ(Lign) = Range("J" & Lig).Value Lign = Lign + 1 Next Lig 'On entre dans une autre variable tableau nos critères de tri : TablTri = Array("ATHK", "DBUD", "HIUD", "OHFC", "POHF", "TFDJ", "MJNC", "PLSX", "TGUJ") 'On boucle sur tous les éléments de notre variable de "tri" For Cpt = LBound(TablTri) To UBound(TablTri) 'On boucle du 1er au dernier élément du tableau contenant les données ColJ : For Lig = LBound(TablColJ) To UBound(TablColJ) 'Si les éléments sont identiques If TablColJ(Lig) = TablTri(Cpt) Then Range("X" & Lig + LigHeader) = "VRAI" End If Next Next MsgBox "Test réalisé en : " & Timer - t & " secondes!" End Sub
Bon, je viens de tester, 1 .7 secondes pour 25 000 lignes. Ca devrait aller.
Dis moi comment et par quoi tu souhaites remplacer les données colonne I si J appartient à Array("ATHK", "DBUD", "HIUD", "OHFC", "POHF", "TFDJ", "MJNC", "PLSX", "TGUJ")
Les données sont multiples? Tu en as autant que dans l'array?
Exemple :
ATHK ==> IDEA
DBUD ==> COQUI
etc...
Si oui, donne moi l'array correspondant...
Ou alors tu remplaces systématiquement la donnée correspondante colonne I par une seule et même valeur? Si oui, laquelle?
Ou autre...
PS : la suite demain, si tu veux bien...
Dis moi comment et par quoi tu souhaites remplacer les données colonne I si J appartient à Array("ATHK", "DBUD", "HIUD", "OHFC", "POHF", "TFDJ", "MJNC", "PLSX", "TGUJ")
Les données sont multiples? Tu en as autant que dans l'array?
Exemple :
ATHK ==> IDEA
DBUD ==> COQUI
etc...
Si oui, donne moi l'array correspondant...
Ou alors tu remplaces systématiquement la donnée correspondante colonne I par une seule et même valeur? Si oui, laquelle?
Ou autre...
PS : la suite demain, si tu veux bien...
pour toutes ces donnees je remplace la valeur en colonne I par une seule et meme valeur, DIME.
J'ai d'autres modifications dans le genre a faire mais ca viendra plus tard. Si j'arrive a faire marcher celle ci, le reste sera plus simple :-)
1,7 secondes, c'est plus rapide que si je fais ces changements a la main... Super!
Demain me semble parfait! Passe une bonne soiree et merci encore de ton aide!!!
J'ai d'autres modifications dans le genre a faire mais ca viendra plus tard. Si j'arrive a faire marcher celle ci, le reste sera plus simple :-)
1,7 secondes, c'est plus rapide que si je fais ces changements a la main... Super!
Demain me semble parfait! Passe une bonne soiree et merci encore de ton aide!!!