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 SubBonsoir,
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