Code VBA pour extraire le texte des cellules

Bonjour,

J'ai le code ci-dessous qui permet de m'extraire les valeurs d'une cellule dans un autre fichier. Après des heures d'acharnement c'est super il extrait les valeurs ! Par contre quand les valeurs des cellules sont en texte la ça beug ... Comment faire pour que ce soit aussi les commentaires texte qui soit extrait et pas seulement les chiffres ?

Pouvez-vous m'aider ??
Merci d'avance

Sub Test()

    flag_zero = Workbooks("Transfert événements.xlsm").Worksheets("Programme").Range("AP3")
    flag_extention = Workbooks("Transfert événements.xlsm").Worksheets("Programme").Range("AQ3")
    If (flag_extention = "txt") Then
        separateur = chr(9)
    Else
        separateur = ";"
    End If

    date_validation = InputBox("Date maxi : ", , Format(Now(), "dd/mm/yyyy"))

    Ficdestin_J = "q:\mire\" & ActiveCell.Worksheet.Name & "-" & Format(Date, "dd-mm-yy") & "-T." & flag_extention
    Open Ficdestin_J For Output As 1
    Print #1, "Alias ;A ignorer ;A ignorer ;A ignorer ;Point de structure  ;A ignorer ;Matériel ;A ignorer ;A ignorer ;Titre ;Commentaire 

    flag_ana = 0

      If (Cells(6, 2) = "Dates") Then
        I = 3

        While (Cells(1, I) <> "FIN")
            Période = Cells(2, I)
            If (Période = "J" Or Période = "M") Then
                ic = 7
                While (Cells(ic, I) <> "FIN")
                    Valeurs = Cells(ic, I)
                    dateV = Cells(ic, 2)
                    o = DateDiff("d", dateV, date_validation)
                    If (DateDiff("d", dateV, date_validation) >= 0) Then

                        GERE = Cells(6, I)

                        If (((flag_zero = "Non" And Valeurs > 0) Or flag_zero = "Oui") And (Cells(ic, I).Font.ColorIndex = 1 Or Cells(ic, I).Font.ColorIndex = xlAutomatic) And Valeurs <> "") Then
                        If (Cells(ic, I) - Round(Cells(ic, I), 0) = 0) Then
                                Valeurs = Cells(ic, I)
                            Else
                                 Valeurs = Round(Cells(ic, I), 2)

                            End If
                            flag_ana = 1

                            If (Période = "M") Then
                                If (Cells(ic, 1) = "M") Then
                                  If (Cells(1, I) = "COMMENTAIRES") Then

                                        Print #1, ";;;;;;" & GERE & ";;;;" & Valeurs & ";" & dateV & ";;;"
                                    Cells(ic, I).Font.ColorIndex = 3
                                End If
                                End If
                            ElseIf (Période = "J") Then
                                If (Cells(ic, 1) = "J") Then
                                    If (Cells(1, I) = "COMMENTAIRES") Then

                                        Print #1, ";;;;;;" & GERE & ";;;;" & Valeurs & ";" & dateV & ";;;"
                                    Cells(ic, I).Font.ColorIndex = 3
                                End If
                                End If
                            End If
                        End If
                    Else
                        pp = 1
                    End If
                ic = ic + 1
                Wend
            End If
            I = I + 1
        Wend
      End If

    Close #1
    Close #2

        If flag_ana = 0 Then
            MsgBox "Pas de données à importer"
        Else
            MsgBox "Fichier " & Ficdestin_J & " et " & Ficdestin_M & " créé pour l'Import "
        End If

End Sub

Bonsoir,

l'erreur n'est elle pas signalée sur cette ligne : If (Cells(ic, I) - Round(Cells(ic, I), 0) = 0) Then

Il y a un "arrondi" de valeur de fait, donc si c'est du texte alors VBA signale une erreur de type ou autre, non ?
Vous devriez orienté le code en fonction du type de valeur avec l'instruction, par exemple, IsNumeric() :
Si c'est numérique je fait "Round" sinon c'est du texte et je fais autre chose.

Mais sans fichier, avouez que ce n'est pas simple !

@ bientôt

LouReeD

Merci de votre réponse mais j’ai essayé de faire if Cells(ic, I) - Round(Cells(ic, I), 0) = « string »Then

Même avec « string »ca ne fonctionne pas ce ne me prend pas en compte le texte

Bonsoir,

toujours pas de fichier ?

Sinon mon idée était plutôt ceci :

If IsNumeric(Cells(ic, I)) then
    If (Cells(ic, I) - Round(Cells(ic, I), 0) = 0) Then
        ' puis le reste du code pour du numéric
Else ' ce n'est pas numérique, on gère donc une valeur "texte"
    ' ici le code que vous voulez appliquez si c'est du texte
End If

@ bientôt

LouReeD

Rechercher des sujets similaires à "code vba extraire texte"