Split sans valeur
Résolu
J0K0
Messages postés
167
Statut
Membre
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
Bonjour,
J'ai un début de code assez générique afin de séparer une extraction réalisée par un logiciel de contrôle d'accès.
Néanmoins cette extraction réalise de temps à autres plusieurs valeurs du split.
Question ; est il possible de dire que si la valeur du split <> "" on poursuit sinon non ? Le code réalisé donne une erreur justement quand c'est vide ...
En gras, là où ça plante ...
Merci pour cette aide.
J'ai un début de code assez générique afin de séparer une extraction réalisée par un logiciel de contrôle d'accès.
Néanmoins cette extraction réalise de temps à autres plusieurs valeurs du split.
Question ; est il possible de dire que si la valeur du split <> "" on poursuit sinon non ? Le code réalisé donne une erreur justement quand c'est vide ...
En gras, là où ça plante ...
Sub couper() 'copie/colle la feuille après la feuille extraction Sheets(1).Copy after:=Sheets(1) 'renome la feuille en date du jour aujour = Format(Now, "yyyy.mm.dd") Sheets(2).Name = aujour 'coupe les virgules With Sheets(1) i = 1 'vale = Sheets(1).Range("A" & i).Value 'For vale = 1 To Sheets(1).Range("65000").End(xlUp).Row Do While Sheets(1).Range("A" & i).Value <> "" vale = Sheets(1).Range("A" & i).Value sup = Split(vale, ",") 'colle sans les valeurs sans les virgules nvale1 = sup(0) 'nom nvale2 = sup(1) 'prénom nvale3 = sup(2) 'photo nvale4 = sup(3) 'actif/non actif nvale5 = sup(4) 'N° profil nvale6 = sup(5) 'N° profil If sup(6) <> "" Then nvale7 = sup(6) 'N° profil ElseIf sup(7) <> "" Then nvale8 = sup(7) 'scan badge <bold>ElseIf sup(8) <> "" Then</bold> nvale9 = sup(8) 'entreprise Else End If If nvale1 <> "" Then Sheets(2).Range("A" & i).Value = nvale1 'nom ElseIf nvale2 <> "" Then Sheets(2).Range("B" & i).Value = nvale2 'prénom ElseIf nvale3 <> "" Then Sheets(2).Range("C" & i).Value = nvale3 'photo ElseIf nvale4 <> "" Then Sheets(2).Range("D" & i).Value = nvale4 'actif/non actif ElseIf nvale5 <> "" Then Sheets(2).Range("E" & i).Value = nvale5 'N° ElseIf nvale6 <> "" Then Sheets(2).Range("F" & i).Value = nvale6 'N° ElseIf nvale7 <> "" Then Sheets(2).Range("G" & i).Value = nvale7 'N° ElseIf nvale8 <> "" Then Sheets(2).Range("H" & i).Value = nvale8 'scan badge ElseIf nvale9 <> "" Then Sheets(2).Range("I" & i).Value = nvale9 'entreprise Else End If i = i + 1 Loop 'Loop 'Next vale End With MsgBox ("extraction terminée") End Sub
Merci pour cette aide.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Split sans valeur
- Split cam - Télécharger - Messagerie
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Valeur ascii - Guide
- Excel ne pas afficher #valeur ✓ - Forum Excel
- Formule excel si contient texte alors valeur ✓ - Forum Excel
2 réponses
bonsoir, il suffit peut-être d'ajouter
sinon, tu pourrais prendre
if ubound(sup)<8 then ReDim Preserve sup(8) end ifaprès
sup = Split(vale, ",")
sinon, tu pourrais prendre
ubound(sup), cela te donnerait l'index maximum de sup.
il serait peut-être plus simple, après la ligne 15, d'ajouter
vale = vale & ",,,,,,,,,,"
Re tous,
a mon avis ca ne marche pas comme vous voudiriez
exemple de code:
a mon avis ca ne marche pas comme vous voudiriez
If nvale1 <> "" Then Sheets(2).Range("A" & i).Value = nvale1 'nom ElseIf nvale2 <> "" Then Sheets(2).Range("B" & i).Value = nvale2 'prénom
exemple de code:
Sub couper() 'copie/colle la feuille après la feuille extraction Sheets(1).Copy after:=Sheets(1) 'renome la feuille en date du jour aujour = Format(Now, "yyyy.mm.dd") Sheets(2).Name = aujour 'coupe les virgules With Sheets(1) derlig = .Range("A" & Rows.Count).End(xlUp).Row Plage = .Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row) i = 1 For Each cel In Plage sup = Split(cel, ",") Nb = UBound(sup) Col = 1 For n = 0 To Nb If sup(n) <> "" Then Sheets(2).Cells(i, Col).Value = sup(n) End If Col = Col + 1 Next n i = i + 1 Next cel End With MsgBox ("extraction terminée") End Sub
merci
montre comment tu l'as inséré.
c'est commenté mais ça te donne une idée .....
en fait sup(8) est vide .... ou n'existe pas ....
d'où le code initial qui me paraissait juste if sup(0) <> "" then ... mais qui ne l'est pas !
erreur à :
nvale8 = sup(7) 'scan badge