Détecter une cellule excel composée

nebudvba Messages postés 3 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 16 décembre 2008 - 16 déc. 2008 à 10:40
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 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 :


"8


9"


et je voudrais retrouver "8" en D1 & "9" en D2)

Merci d'avance,


 

3 réponses

userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Derniè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.

BR

USERRRQI115
Simple user
Great brain
0
wg2 Messages postés 49 Date d'inscription dimanche 29 septembre 2002 Statut Membre Dernière intervention 17 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.

a+
0
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 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
           
            LongSaisie = Len(Saisie)
            Saisie = Right(Saisie, LongSaisie - PlaceAltEnter)
             Compteur = Compteur + 1
            Loop


Next i
End Sub
0
Rejoignez-nous