Bonjour,
Nous avons un fichier avec une succession de ligne qui contiennent un certain nombre d'attribut (une trentaine) et qui peuvent être vide.
Pour chaque ligne, nous souhaitons concaténer ces valeurs selon un type défini dans une ligne fixe.
Ex :
| DATE | TEXT | TEXT | NUMBER | NUMBER |
| 05/07/2012 | toto | | 158 | |
| 05/12/2012 | tata | test | 158 | 75 |
Concatener avec une ','
champs DATE recopier le contenu de la cellule entre '' ou mettre null
champs NUMBER recopier le contenu de la cellule ou mettre null
champs TEXT recopier le contenu de la cellule entre '' ou mettre 'N/A'
Donnerai :
=> '05/07/2012','toto','N/A',158,null
=> '05/12/2012','tat','test',158,75
Après recherche sur internet nous sommes arrivées à cette fonction, mais elle ne marche pas :
{
Function Concatvalue(plage As Range, typV As Range, Optional sep As String) As String
Dim rep As String, c As String, typ As String
For i = 0 To Range(typV).Cells
c = plage(i)
typ = typV(i)
If typ = "NUMBER" Then
If c <> "" Then
rep = rep & c & sep
Else
rep = rep & "null" & sep
End If
Else
If typ = "DATE" Then
If c <> "" Then
rep = rep & "'" & c & "'" & sep
Else
rep = rep & "null" & sep
End If
Else
If c <> "" Then
rep = rep & "'" & c & "'" & sep
Else
rep = rep & "'N/A'" & sep
End If
End If
End If
Next i
Concatplage = Left(rep, Len(rep) - Len(sep))
End Function
}
Merci beaucoup pour votre support
Nous avons un fichier avec une succession de ligne qui contiennent un certain nombre d'attribut (une trentaine) et qui peuvent être vide.
Pour chaque ligne, nous souhaitons concaténer ces valeurs selon un type défini dans une ligne fixe.
Ex :
| DATE | TEXT | TEXT | NUMBER | NUMBER |
| 05/07/2012 | toto | | 158 | |
| 05/12/2012 | tata | test | 158 | 75 |
Concatener avec une ','
champs DATE recopier le contenu de la cellule entre '' ou mettre null
champs NUMBER recopier le contenu de la cellule ou mettre null
champs TEXT recopier le contenu de la cellule entre '' ou mettre 'N/A'
Donnerai :
=> '05/07/2012','toto','N/A',158,null
=> '05/12/2012','tat','test',158,75
Après recherche sur internet nous sommes arrivées à cette fonction, mais elle ne marche pas :
{
Function Concatvalue(plage As Range, typV As Range, Optional sep As String) As String
Dim rep As String, c As String, typ As String
For i = 0 To Range(typV).Cells
c = plage(i)
typ = typV(i)
If typ = "NUMBER" Then
If c <> "" Then
rep = rep & c & sep
Else
rep = rep & "null" & sep
End If
Else
If typ = "DATE" Then
If c <> "" Then
rep = rep & "'" & c & "'" & sep
Else
rep = rep & "null" & sep
End If
Else
If c <> "" Then
rep = rep & "'" & c & "'" & sep
Else
rep = rep & "'N/A'" & sep
End If
End If
End If
Next i
Concatplage = Left(rep, Len(rep) - Len(sep))
End Function
}
Merci beaucoup pour votre support