VBA - Modification de cellules visibles
Résolu/Fermé
Valou Choc
Messages postés
5
Date d'inscription
mardi 10 janvier 2012
Statut
Membre
Dernière intervention
11 janvier 2012
-
10 janv. 2012 à 14:34
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 11 janv. 2012 à 13:29
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 11 janv. 2012 à 13:29
A voir également:
- VBA - Modification de cellules visibles
- Logiciel modification pdf - Guide
- Suivi de modification word - Guide
- Excel additionner des cellules - Guide
- Verrouiller cellules excel - Guide
- Incompatibilité de type vba ✓ - Forum Programmation
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
10 janv. 2012 à 16:19
10 janv. 2012 à 16:19
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
Valou Choc
Messages postés
5
Date d'inscription
mardi 10 janvier 2012
Statut
Membre
Dernière intervention
11 janvier 2012
10 janv. 2012 à 16:25
10 janv. 2012 à 16:25
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?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
Modifié par pijaku le 10/01/2012 à 16:34
Modifié par pijaku le 10/01/2012 à 16:34
Pas en passant par des variables tableaux.
J'te fait un test dans 5 minutes...
As tu une colonne vide? K, L ...
J'te fait un test dans 5 minutes...
As tu une colonne vide? K, L ...
Valou Choc
Messages postés
5
Date d'inscription
mardi 10 janvier 2012
Statut
Membre
Dernière intervention
11 janvier 2012
10 janv. 2012 à 16:36
10 janv. 2012 à 16:36
les colonnes A a W ont des donnees, ensuite toutes les colonnes sont vides.
Merci pour ton aide!
Merci pour ton aide!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
10 janv. 2012 à 16:51
10 janv. 2012 à 16:51
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
Modifié par pijaku le 10/01/2012 à 17:00
Modifié par pijaku le 10/01/2012 à 17:00
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...
Valou Choc
Messages postés
5
Date d'inscription
mardi 10 janvier 2012
Statut
Membre
Dernière intervention
11 janvier 2012
10 janv. 2012 à 17:09
10 janv. 2012 à 17:09
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!!!