nebudvba
Messages postés3Date d'inscriptionmardi 5 février 2008StatutMembreDernière intervention16 décembre 2008
-
16 déc. 2008 à 10:40
piloulac
Messages postés21Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention28 décembre 2008
-
17 déc. 2008 à 02:10
Bonjour,
J'ai une question sous vba excel et je n'ai pas trouvé la solution sur ce site. J'ai un tableau de 1500 lignes et quelques colonnes. Dans une colonne je veux faire un test sur toutes mes lignes. Le problème est que dans cette colonne, à certaines lignes je tombe sur une cellule composée (cellule écrite sur 2 lignes grace à Alt+Enter).
Comment détecter ce type de cellule? Comment l'éclater ? (par exemple en B6 je tombe sur une cellule :
userrrqi115
Messages postés181Date d'inscriptionmardi 18 novembre 2008StatutMembreDernière intervention 4 février 2011 16 déc. 2008 à 13:00
Hello,
Pour identifier le type de cellule le mieux est de chercher ton caractère spécial (Alt+Entrée = Chr(10))
Et il doit être possible de scinder la valeur de ta cellule via ce Chr.
wg2
Messages postés49Date d'inscriptiondimanche 29 septembre 2002StatutMembreDernière intervention17 décembre 2008 16 déc. 2008 à 14:17
Bonjour,
oui, c'est en effet le bon choix.
J'ai utilisé une méthode similaire dans une application ( 6.000 lignes à traiter, avec des tas de cas particuliers... ), sans aucun soucis.
Le mieux est de prévoir les ( principaux ) cas possibles. Ceux non prévus ( non reconnus ) peuvent être signalés comme " rejets", et éventuellement envoyés dans un fichier ( un simple TXT ) prévu à cet effet.
Par exemple, à la fin, tu annonces " 1.497 lignes traitées avec succés sur 1.500 lignes examinées.", ce qui te permet ( aussi ) de te rendre rapidement compte de l'amélioration des performances de ton outil d'analyse, en fonction des cas trouvés, reconnus , et traités comme des cas particuliers.
Par exemple, en ajoutant quelques lignes de code, je suis passé de 78 rejets ( sur 6.000 ) à moins de 20.
Le probléme de ce systéme: Si le fichier Excel fourni change ( trop ). Tu devrais prévoir avec ton client ( ? )
une maintenance. Ce logiciel est amené, par définition, à suivre les évolution du fichier Excel à traiter.
piloulac
Messages postés21Date d'inscriptiondimanche 10 juin 2007StatutMembreDernière intervention28 décembre 2008 17 déc. 2008 à 02:10
Ca peut être long, mais ça marche.
Grâce à la boucle, ça marche même pour des cellules présentant plusieurs Alt+Enter.
Sub Testcellule()
Dim i, Col, NbTotLgninCol, Compteur, PlaceAltEnter, LongSaisie
Dim Saisie, Mavaleur
Col = 1 'en supposant que les données soient dans la Colonne1
''derniére cellule de la plage
NbTotLgninCol = ActiveSheet.Cells(1, 1).SpecialCells(xlLastCell).Row
'''Un compteur pour les données recueillies
Compteur = 1
'''tester toutes les lignes
For i = 1 To NbTotLgninCol
Saisie = ActiveSheet.Cells(i, Col).Text
'''tester si plusieurs Chr(10) dans saisie
Do
PlaceAltEnter = InStr(1, Saisie, Chr(10))
If PlaceAltEnter = 0 Then
If Saisie <> "" Then
''Valeur sur une seule ligne ou sur dernière ligne
'''Col+1 : on écrira dans la seconde colonne.
ActiveSheet.Cells(Compteur, Col + 1).Formula = Saisie
Compteur = Compteur + 1
End If
Exit Do
'
End If
'''Valeur sur lignes multiples
Mavaleur = Left(Saisie, PlaceAltEnter - 1)
ActiveSheet.Cells(Compteur, Col + 1).Formula = Mavaleur