Dans le cadre d'une association, je souhaite automatiser la présentation
d'une liste de participants.
Cette liste est issue (en C5) d'un copier-coller (à la main) des
destinataires d'un courriel.
Afin de "travailler" le résultat de ce copier-coller, j'ai écrit la macro
suivante qui fonctionne (si des puristes trouvent à la simplifier, ils
seront les bienvenus).
Ma question concerne le tableau de tableaux à passer à la méthode
FieldInfo:= du TextToColumns.
Comment automatiser cette information afin de l'adapter à une liste
évolutive (mon exemple comporte 20 participants, mais ce nombre peut être
variable) ?
À la lecture de l'aide, j'ai bien compris que le premier argument était le
n° de ma colonne de mon tableau et le second 1 du type général.
Mais comment l'automatiser ?
Une boucle sur les colonnes ? Mais je ne vois pas comment l'écrire pour
restituer le tableau final.
Sub ListeDesParticipants()
Dim DerCol As Integer
Dim DerLin As Long
With Application
.ScreenUpdating = False
.CutCopyMode = False
End With
Toujours sur le pont ? On s'accroche ? Petit coucou en passant. Mais je suis incapable de te répondre. -((
Jacques.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Péhemme" a écrit dans le message de groupe de discussion : l17gpr$hjs$
Bonjour à Tous,
Dans le cadre d'une association, je souhaite automatiser la présentation d'une liste de participants. ... Merci d'avance de votre aide. Michel
MichD
Bonjour,
Pour la partie "TextToColumns", il s'agit d'indiquer simplement la première ligne et la dernière ligne que tu veux traiter. Par exemple, pour traiter les lignes 5 à x
'----------------------------- With Worksheets("Feuil1") 'Nom de la feuille que tu veux With .Range("C5:C" & .Range("C65536").End(xlUp).row) .TextToColumns _ Destination:=Worksheets("Feuil1").Range("C10"), _ DataType:=xlDelimited, _ Tab:úlse, _ Semicolon:=True, _ Comma:úlse, _ Space:úlse, _ Other:úlse, _ FieldInfo:= _ Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _ Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), _ Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), _ Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), _ Array(21, 1)) End With End With '-----------------------------
MichD --------------------------------------------------------------- "Péhemme" a écrit dans le message de groupe de discussion : l17gpr$hjs$
Bonjour à Tous,
Dans le cadre d'une association, je souhaite automatiser la présentation d'une liste de participants. Cette liste est issue (en C5) d'un copier-coller (à la main) des destinataires d'un courriel.
Afin de "travailler" le résultat de ce copier-coller, j'ai écrit la macro suivante qui fonctionne (si des puristes trouvent à la simplifier, ils seront les bienvenus).
Ma question concerne le tableau de tableaux à passer à la méthode FieldInfo:= du TextToColumns. Comment automatiser cette information afin de l'adapter à une liste évolutive (mon exemple comporte 20 participants, mais ce nombre peut être variable) ?
À la lecture de l'aide, j'ai bien compris que le premier argument était le n° de ma colonne de mon tableau et le second 1 du type général. Mais comment l'automatiser ? Une boucle sur les colonnes ? Mais je ne vois pas comment l'écrire pour restituer le tableau final.
Sub ListeDesParticipants() Dim DerCol As Integer Dim DerLin As Long
With Application .ScreenUpdating = False .CutCopyMode = False End With
Pour la partie "TextToColumns", il s'agit d'indiquer
simplement la première ligne et la dernière ligne que tu veux
traiter. Par exemple, pour traiter les lignes 5 à x
'-----------------------------
With Worksheets("Feuil1") 'Nom de la feuille que tu veux
With .Range("C5:C" & .Range("C65536").End(xlUp).row)
.TextToColumns _
Destination:=Worksheets("Feuil1").Range("C10"), _
DataType:=xlDelimited, _
Tab:úlse, _
Semicolon:=True, _
Comma:úlse, _
Space:úlse, _
Other:úlse, _
FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1),
Array(5, 1), _
Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1),
Array(10, 1), _
Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1),
Array(15, 1), _
Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1),
Array(20, 1), _
Array(21, 1))
End With
End With
'-----------------------------
MichD
---------------------------------------------------------------
"Péhemme" a écrit dans le message de groupe de discussion :
l17gpr$hjs$1@speranza.aioe.org...
Bonjour à Tous,
Dans le cadre d'une association, je souhaite automatiser la présentation
d'une liste de participants.
Cette liste est issue (en C5) d'un copier-coller (à la main) des
destinataires d'un courriel.
Afin de "travailler" le résultat de ce copier-coller, j'ai écrit la macro
suivante qui fonctionne (si des puristes trouvent à la simplifier, ils
seront les bienvenus).
Ma question concerne le tableau de tableaux à passer à la méthode
FieldInfo:= du TextToColumns.
Comment automatiser cette information afin de l'adapter à une liste
évolutive (mon exemple comporte 20 participants, mais ce nombre peut être
variable) ?
À la lecture de l'aide, j'ai bien compris que le premier argument était le
n° de ma colonne de mon tableau et le second 1 du type général.
Mais comment l'automatiser ?
Une boucle sur les colonnes ? Mais je ne vois pas comment l'écrire pour
restituer le tableau final.
Sub ListeDesParticipants()
Dim DerCol As Integer
Dim DerLin As Long
With Application
.ScreenUpdating = False
.CutCopyMode = False
End With
Pour la partie "TextToColumns", il s'agit d'indiquer simplement la première ligne et la dernière ligne que tu veux traiter. Par exemple, pour traiter les lignes 5 à x
'----------------------------- With Worksheets("Feuil1") 'Nom de la feuille que tu veux With .Range("C5:C" & .Range("C65536").End(xlUp).row) .TextToColumns _ Destination:=Worksheets("Feuil1").Range("C10"), _ DataType:=xlDelimited, _ Tab:úlse, _ Semicolon:=True, _ Comma:úlse, _ Space:úlse, _ Other:úlse, _ FieldInfo:= _ Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _ Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), _ Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), _ Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), _ Array(21, 1)) End With End With '-----------------------------
MichD --------------------------------------------------------------- "Péhemme" a écrit dans le message de groupe de discussion : l17gpr$hjs$
Bonjour à Tous,
Dans le cadre d'une association, je souhaite automatiser la présentation d'une liste de participants. Cette liste est issue (en C5) d'un copier-coller (à la main) des destinataires d'un courriel.
Afin de "travailler" le résultat de ce copier-coller, j'ai écrit la macro suivante qui fonctionne (si des puristes trouvent à la simplifier, ils seront les bienvenus).
Ma question concerne le tableau de tableaux à passer à la méthode FieldInfo:= du TextToColumns. Comment automatiser cette information afin de l'adapter à une liste évolutive (mon exemple comporte 20 participants, mais ce nombre peut être variable) ?
À la lecture de l'aide, j'ai bien compris que le premier argument était le n° de ma colonne de mon tableau et le second 1 du type général. Mais comment l'automatiser ? Une boucle sur les colonnes ? Mais je ne vois pas comment l'écrire pour restituer le tableau final.
Sub ListeDesParticipants() Dim DerCol As Integer Dim DerLin As Long
With Application .ScreenUpdating = False .CutCopyMode = False End With
J'ai du mal m'exprimer. J'ai mes informations à traiter sur une seule ligne. Mon problème n'est pas au niveau du Range à traiter, mais au niveau du tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...) Comment, en VBA rendre variable ce tableau en fonction du nombre d'informations comprises entre, en l'occurrence, les ";" ?
Bien amicalement Michel
"MichD" a écrit dans le message de groupe de discussion : l17kp5$t5b$
Bonjour,
Pour la partie "TextToColumns", il s'agit d'indiquer simplement la première ligne et la dernière ligne que tu veux traiter. Par exemple, pour traiter les lignes 5 à x
'----------------------------- With Worksheets("Feuil1") 'Nom de la feuille que tu veux With .Range("C5:C" & .Range("C65536").End(xlUp).row) .TextToColumns _ Destination:=Worksheets("Feuil1").Range("C10"), _ DataType:=xlDelimited, _ Tab:úlse, _ Semicolon:=True, _ Comma:úlse, _ Space:úlse, _ Other:úlse, _ FieldInfo:= _ Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _ Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), _ Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), _ Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), _ Array(21, 1)) End With End With '-----------------------------
MichD --------------------------------------------------------------- "Péhemme" a écrit dans le message de groupe de discussion : l17gpr$hjs$
Bonjour à Tous,
Dans le cadre d'une association, je souhaite automatiser la présentation d'une liste de participants. Cette liste est issue (en C5) d'un copier-coller (à la main) des destinataires d'un courriel.
Afin de "travailler" le résultat de ce copier-coller, j'ai écrit la macro suivante qui fonctionne (si des puristes trouvent à la simplifier, ils seront les bienvenus).
Ma question concerne le tableau de tableaux à passer à la méthode FieldInfo:= du TextToColumns. Comment automatiser cette information afin de l'adapter à une liste évolutive (mon exemple comporte 20 participants, mais ce nombre peut être variable) ?
À la lecture de l'aide, j'ai bien compris que le premier argument était le n° de ma colonne de mon tableau et le second 1 du type général. Mais comment l'automatiser ? Une boucle sur les colonnes ? Mais je ne vois pas comment l'écrire pour restituer le tableau final.
Sub ListeDesParticipants() Dim DerCol As Integer Dim DerLin As Long
With Application .ScreenUpdating = False .CutCopyMode = False End With
J'ai du mal m'exprimer.
J'ai mes informations à traiter sur une seule ligne.
Mon problème n'est pas au niveau du Range à traiter, mais au niveau du
tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...)
Comment, en VBA rendre variable ce tableau en fonction du nombre
d'informations comprises entre, en l'occurrence, les ";" ?
Bien amicalement
Michel
"MichD" a écrit dans le message de groupe de discussion :
l17kp5$t5b$1@speranza.aioe.org...
Bonjour,
Pour la partie "TextToColumns", il s'agit d'indiquer
simplement la première ligne et la dernière ligne que tu veux
traiter. Par exemple, pour traiter les lignes 5 à x
'-----------------------------
With Worksheets("Feuil1") 'Nom de la feuille que tu veux
With .Range("C5:C" & .Range("C65536").End(xlUp).row)
.TextToColumns _
Destination:=Worksheets("Feuil1").Range("C10"), _
DataType:=xlDelimited, _
Tab:úlse, _
Semicolon:=True, _
Comma:úlse, _
Space:úlse, _
Other:úlse, _
FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1),
Array(5, 1), _
Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1),
Array(10, 1), _
Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1),
Array(15, 1), _
Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1),
Array(20, 1), _
Array(21, 1))
End With
End With
'-----------------------------
MichD
---------------------------------------------------------------
"Péhemme" a écrit dans le message de groupe de discussion :
l17gpr$hjs$1@speranza.aioe.org...
Bonjour à Tous,
Dans le cadre d'une association, je souhaite automatiser la présentation
d'une liste de participants.
Cette liste est issue (en C5) d'un copier-coller (à la main) des
destinataires d'un courriel.
Afin de "travailler" le résultat de ce copier-coller, j'ai écrit la macro
suivante qui fonctionne (si des puristes trouvent à la simplifier, ils
seront les bienvenus).
Ma question concerne le tableau de tableaux à passer à la méthode
FieldInfo:= du TextToColumns.
Comment automatiser cette information afin de l'adapter à une liste
évolutive (mon exemple comporte 20 participants, mais ce nombre peut être
variable) ?
À la lecture de l'aide, j'ai bien compris que le premier argument était le
n° de ma colonne de mon tableau et le second 1 du type général.
Mais comment l'automatiser ?
Une boucle sur les colonnes ? Mais je ne vois pas comment l'écrire pour
restituer le tableau final.
Sub ListeDesParticipants()
Dim DerCol As Integer
Dim DerLin As Long
With Application
.ScreenUpdating = False
.CutCopyMode = False
End With
J'ai du mal m'exprimer. J'ai mes informations à traiter sur une seule ligne. Mon problème n'est pas au niveau du Range à traiter, mais au niveau du tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...) Comment, en VBA rendre variable ce tableau en fonction du nombre d'informations comprises entre, en l'occurrence, les ";" ?
Bien amicalement Michel
"MichD" a écrit dans le message de groupe de discussion : l17kp5$t5b$
Bonjour,
Pour la partie "TextToColumns", il s'agit d'indiquer simplement la première ligne et la dernière ligne que tu veux traiter. Par exemple, pour traiter les lignes 5 à x
'----------------------------- With Worksheets("Feuil1") 'Nom de la feuille que tu veux With .Range("C5:C" & .Range("C65536").End(xlUp).row) .TextToColumns _ Destination:=Worksheets("Feuil1").Range("C10"), _ DataType:=xlDelimited, _ Tab:úlse, _ Semicolon:=True, _ Comma:úlse, _ Space:úlse, _ Other:úlse, _ FieldInfo:= _ Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _ Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), _ Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), _ Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), _ Array(21, 1)) End With End With '-----------------------------
MichD --------------------------------------------------------------- "Péhemme" a écrit dans le message de groupe de discussion : l17gpr$hjs$
Bonjour à Tous,
Dans le cadre d'une association, je souhaite automatiser la présentation d'une liste de participants. Cette liste est issue (en C5) d'un copier-coller (à la main) des destinataires d'un courriel.
Afin de "travailler" le résultat de ce copier-coller, j'ai écrit la macro suivante qui fonctionne (si des puristes trouvent à la simplifier, ils seront les bienvenus).
Ma question concerne le tableau de tableaux à passer à la méthode FieldInfo:= du TextToColumns. Comment automatiser cette information afin de l'adapter à une liste évolutive (mon exemple comporte 20 participants, mais ce nombre peut être variable) ?
À la lecture de l'aide, j'ai bien compris que le premier argument était le n° de ma colonne de mon tableau et le second 1 du type général. Mais comment l'automatiser ? Une boucle sur les colonnes ? Mais je ne vois pas comment l'écrire pour restituer le tableau final.
Sub ListeDesParticipants() Dim DerCol As Integer Dim DerLin As Long
With Application .ScreenUpdating = False .CutCopyMode = False End With
Il n'y a pas d'ajustement possible pour cette section. Si à chaque fois la nature des informations et le nombre de champs sont différents, tu dois refaire la macro et l'adapter à ce que tu veux faire. Il n'y a pas moyen d'écrire cette section d'une façon générique. Regarde dans l'aide "TextToColumns", chaque array(x,y) a une signification.
Le x signifie la position du champ dans la chaîne de caractère le y le type de format de la donnée ou si ce champ doit être distribué ou non... Lorsque tu utilises l'enregistreur de macro, il utilise tous les champs, mais tu peux te contenter de définir seulement ceux qui ont certaines caractéristiques particulières comme les "Dates", les champs que tu ne veux pas redistribuer... Cependant, tu dois pour ces derniers définir le paramètre "position" selon la place qu'ils ont dans la chaîne de caractères(champs) de départ.
Il n'y a pas d'ajustement possible pour cette section.
Si à chaque fois la nature des informations et le nombre de champs
sont différents, tu dois refaire la macro et l'adapter à ce que tu veux
faire. Il n'y a pas moyen d'écrire cette section d'une façon générique.
Regarde dans l'aide "TextToColumns", chaque array(x,y) a une signification.
Le x signifie la position du champ dans la chaîne de caractère
le y le type de format de la donnée ou si ce champ doit être distribué
ou non... Lorsque tu utilises l'enregistreur de macro, il utilise tous les
champs, mais tu peux te contenter de définir seulement ceux qui ont
certaines caractéristiques particulières comme les "Dates", les champs
que tu ne veux pas redistribuer... Cependant, tu dois pour ces derniers
définir le paramètre "position" selon la place qu'ils ont dans la chaîne
de caractères(champs) de départ.
Il n'y a pas d'ajustement possible pour cette section. Si à chaque fois la nature des informations et le nombre de champs sont différents, tu dois refaire la macro et l'adapter à ce que tu veux faire. Il n'y a pas moyen d'écrire cette section d'une façon générique. Regarde dans l'aide "TextToColumns", chaque array(x,y) a une signification.
Le x signifie la position du champ dans la chaîne de caractère le y le type de format de la donnée ou si ce champ doit être distribué ou non... Lorsque tu utilises l'enregistreur de macro, il utilise tous les champs, mais tu peux te contenter de définir seulement ceux qui ont certaines caractéristiques particulières comme les "Dates", les champs que tu ne veux pas redistribuer... Cependant, tu dois pour ces derniers définir le paramètre "position" selon la place qu'ils ont dans la chaîne de caractères(champs) de départ.
J'ai du mal m'exprimer. J'ai mes informations à traiter sur une seule ligne. Mon problème n'est pas au niveau du Range à traiter, mais au niveau du tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...) Comment, en VBA rendre variable ce tableau en fonction du nombre d'informations comprises entre, en l'occurrence, les ";" ?
Bien amicalement Michel
bonjour Michel,
mets en seulement 1 c'est ben amasse,
FieldInfo:= Array(Array(1, 1))
isabelle
Le 2013-09-16 15:41, Péhemme a écrit :
Merci Denis,
J'ai du mal m'exprimer.
J'ai mes informations à traiter sur une seule ligne.
Mon problème n'est pas au niveau du Range à traiter, mais au niveau du
tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...)
Comment, en VBA rendre variable ce tableau en fonction du nombre
d'informations comprises entre, en l'occurrence, les ";" ?
J'ai du mal m'exprimer. J'ai mes informations à traiter sur une seule ligne. Mon problème n'est pas au niveau du Range à traiter, mais au niveau du tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...) Comment, en VBA rendre variable ce tableau en fonction du nombre d'informations comprises entre, en l'occurrence, les ";" ?
Bien amicalement Michel
Péhemme
Bonjour Isabelle, bonjour Denis,
Malgré mes nombreux séjours à Montréal dans les années 80, je ne connaissais pas l'expression : "c'est ben amasse". Grâce à VBA, FieldInfo et Isabelle je viens de l'apprendre :-)) Mille mercis (mille est-ce ben amasse ?) donc à Isabelle pour cette réponse. Merci également à Denis pour s'être penché sur ma question. Seul, je n'aurais jamais essayé cette solution. Merci encore à vous deux pour toute l'aide que vous nous apportez. Bien amicalement Michel
"isabelle" a écrit dans le message de groupe de discussion : l17s6g$i5m$
bonjour Michel,
mets en seulement 1 c'est ben amasse,
FieldInfo:= Array(Array(1, 1))
isabelle
Le 2013-09-16 15:41, Péhemme a écrit :
Merci Denis,
J'ai du mal m'exprimer. J'ai mes informations à traiter sur une seule ligne. Mon problème n'est pas au niveau du Range à traiter, mais au niveau du tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...) Comment, en VBA rendre variable ce tableau en fonction du nombre d'informations comprises entre, en l'occurrence, les ";" ?
Bien amicalement Michel
Bonjour Isabelle, bonjour Denis,
Malgré mes nombreux séjours à Montréal dans les années 80, je ne connaissais
pas l'expression : "c'est ben amasse".
Grâce à VBA, FieldInfo et Isabelle je viens de l'apprendre :-))
Mille mercis (mille est-ce ben amasse ?) donc à Isabelle pour cette réponse.
Merci également à Denis pour s'être penché sur ma question.
Seul, je n'aurais jamais essayé cette solution.
Merci encore à vous deux pour toute l'aide que vous nous apportez.
Bien amicalement
Michel
"isabelle" a écrit dans le message de groupe de discussion :
l17s6g$i5m$1@speranza.aioe.org...
bonjour Michel,
mets en seulement 1 c'est ben amasse,
FieldInfo:= Array(Array(1, 1))
isabelle
Le 2013-09-16 15:41, Péhemme a écrit :
Merci Denis,
J'ai du mal m'exprimer.
J'ai mes informations à traiter sur une seule ligne.
Mon problème n'est pas au niveau du Range à traiter, mais au niveau du
tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...)
Comment, en VBA rendre variable ce tableau en fonction du nombre
d'informations comprises entre, en l'occurrence, les ";" ?
Malgré mes nombreux séjours à Montréal dans les années 80, je ne connaissais pas l'expression : "c'est ben amasse". Grâce à VBA, FieldInfo et Isabelle je viens de l'apprendre :-)) Mille mercis (mille est-ce ben amasse ?) donc à Isabelle pour cette réponse. Merci également à Denis pour s'être penché sur ma question. Seul, je n'aurais jamais essayé cette solution. Merci encore à vous deux pour toute l'aide que vous nous apportez. Bien amicalement Michel
"isabelle" a écrit dans le message de groupe de discussion : l17s6g$i5m$
bonjour Michel,
mets en seulement 1 c'est ben amasse,
FieldInfo:= Array(Array(1, 1))
isabelle
Le 2013-09-16 15:41, Péhemme a écrit :
Merci Denis,
J'ai du mal m'exprimer. J'ai mes informations à traiter sur une seule ligne. Mon problème n'est pas au niveau du Range à traiter, mais au niveau du tableau des tableaux du FieldInfo:= Array(Array(1,1),Array(2,1) etc ...) Comment, en VBA rendre variable ce tableau en fonction du nombre d'informations comprises entre, en l'occurrence, les ";" ?