OVH Cloud OVH Cloud

établissement de liste

11 réponses
Avatar
Ctitout
bonjour à tous
je cherche une macro qui puisse me créer la liste suivante :

je possède sur un fichier feuille 1 un liste de nom de ville en A2:A350
Cette liste de villes est trié alphabétiquement.
En C2:C350 une liste de noms de responsableservice gérants ces villes, ces
noms sont actuellement au nombre de 4 mais à terme ce nombre risque
d'augmenter.
Ces noms de responsable de service sont aléatoires et sont inscrits en F1 F2
F3 F4
je désirerais que sur la feuille 2 en A1 soit inscrit le nom du 1er gérant
de service en B1 le nom du 2ème service
en C1 le nom du 3éme service et en D1 le nom du 4éme service (ces noms se
trouvent en F1:F4 sur la feuille 1)
et en dessous de chaque service apparaisse la liste des villes qui sont
gérés par ces gérants d'après la liste se trouvant sur la feuille 1
J'espère avoir était clair.
Avec mes remerciements.

--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°

10 réponses

1 2
Avatar
papou
Bonjour
Y a t-il une raison particulière pour que tu veuilles faire cela par macro ?
Je pose la question parce qu'avec un filtre élaboré à partir de ta feuille 2
tu pourrais très simplement retrouver les infos que tu recherches.
Cordialement
Pascal

"Ctitout" a écrit dans le message de news:

bonjour à tous
je cherche une macro qui puisse me créer la liste suivante :

je possède sur un fichier feuille 1 un liste de nom de ville en A2:A350
Cette liste de villes est trié alphabétiquement.
En C2:C350 une liste de noms de responsableservice gérants ces villes, ces
noms sont actuellement au nombre de 4 mais à terme ce nombre risque
d'augmenter.
Ces noms de responsable de service sont aléatoires et sont inscrits en F1
F2 F3 F4
je désirerais que sur la feuille 2 en A1 soit inscrit le nom du 1er gérant
de service en B1 le nom du 2ème service
en C1 le nom du 3éme service et en D1 le nom du 4éme service (ces noms se
trouvent en F1:F4 sur la feuille 1)
et en dessous de chaque service apparaisse la liste des villes qui sont
gérés par ces gérants d'après la liste se trouvant sur la feuille 1
J'espère avoir était clair.
Avec mes remerciements.

--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°


Avatar
Ctitout
papou wrote:
Bonjour
Y a t-il une raison particulière pour que tu veuilles faire cela par
macro ? Je pose la question parce qu'avec un filtre élaboré à partir
de ta feuille 2 tu pourrais très simplement retrouver les infos que
tu recherches. Cordialement
Pascal

"Ctitout" a écrit dans le message de news:

bonjour à tous
je cherche une macro qui puisse me créer la liste suivante :
<couic>


bonjour
je pensais utiliser une macro pour simplifier les opérations car il y aura
des fluctuations, des regroupements des nouveaux des réaménagements etc..
et la macro ferait cela automatiquement

--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°


Avatar
Rai
Bonjour,

Ci-dessous une proposition de solution.
Elle gère automatiquement le nombre de gérants, le nombre de villes.


Sub trie()
Set org = Sheets("Feuil1")
Set dest = Sheets("Feuil2").[A1]

For i = 1 To org.[F65536].End(xlUp).Row
dest.Offset(0, i - 1) = org.Range("F" & i)
ligne = 1
For l = 1 To org.[A65536].End(xlUp).Row
If org.Range("C" & l) = dest.Offset(0, i - 1) Then
dest.Offset(ligne, i - 1) = org.Range("A" & l)
ligne = ligne + 1
End If
Next l
Next i
End Sub


Bonne fin de semaine.

Rai

"Ctitout" a écrit dans le message de news:
bonjour à tous
je cherche une macro qui puisse me créer la liste suivante :

je possède sur un fichier feuille 1 un liste de nom de ville en A2:A350
Cette liste de villes est trié alphabétiquement.
En C2:C350 une liste de noms de responsableservice gérants ces villes, ces
noms sont actuellement au nombre de 4 mais à terme ce nombre risque
d'augmenter.
Ces noms de responsable de service sont aléatoires et sont inscrits en F1 F2
F3 F4
je désirerais que sur la feuille 2 en A1 soit inscrit le nom du 1er gérant
de service en B1 le nom du 2ème service
en C1 le nom du 3éme service et en D1 le nom du 4éme service (ces noms se
trouvent en F1:F4 sur la feuille 1)
et en dessous de chaque service apparaisse la liste des villes qui sont
gérés par ces gérants d'après la liste se trouvant sur la feuille 1
J'espère avoir était clair.
Avec mes remerciements.

--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨ °ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº° ¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨ °ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº° ¨¨¨¨°



Avatar
Ctitout
papou wrote:
Bonjour
Y a t-il une raison particulière pour que tu veuilles faire cela par
macro ? Je pose la question parce qu'avec un filtre élaboré à partir
de ta feuille 2 tu pourrais très simplement retrouver les infos que
tu recherches. Cordialement
Pascal

"Ctitout" a écrit dans le message de news:

bonjour à tous
je cherche une macro qui puisse me créer la liste suivante :
<couic>


bonjour

je pensais utiliser une macro pour simplifier les opérations car il y
aura des fluctuations, des regroupements des nouveaux des
réaménagements etc.. et la macro ferait cela automatiquement


--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°



Avatar
Ctitout
Rai wrote:
Bonjour,

Ci-dessous une proposition de solution.
Elle gère automatiquement le nombre de gérants, le nombre de villes.


Sub trie()
Set org = Sheets("Feuil1")
Set dest = Sheets("Feuil2").[A1]

For i = 1 To org.[F65536].End(xlUp).Row
dest.Offset(0, i - 1) = org.Range("F" & i)
ligne = 1
For l = 1 To org.[A65536].End(xlUp).Row
If org.Range("C" & l) = dest.Offset(0, i - 1) Then
dest.Offset(ligne, i - 1) = org.Range("A" & l)
ligne = ligne + 1
End If
Next l
Next i
End Sub


Bonne fin de semaine.

Rai

Cela fonctionne

mais j'ai voulus que les colonnes de la feuille 2 soit au bon format et
j'ai essayé (je débute) en insérant aprés Next i et avant End Sub :

Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Columns("A:A").EntireColumn.AutoFit
Columns("A:A").ColumnWidth = 25.43
Columns("A:A").Select
Selection.Copy
Columns("B:D").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
Application.CutCopyMode = False

mais j'obtients erreur d'exécution 1004

--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°

Avatar
Rai
C'est quoi "le bon format" ??
chaque format cellule destination = format cellule origine ??
format de la colonne entière ?? (par rapport à quelle colonne d'origine) ?

rai

"Ctitout" a écrit dans le message de news: eP9%
Rai wrote:
Bonjour,

Ci-dessous une proposition de solution.
Elle gère automatiquement le nombre de gérants, le nombre de villes.


Sub trie()
Set org = Sheets("Feuil1")
Set dest = Sheets("Feuil2").[A1]

For i = 1 To org.[F65536].End(xlUp).Row
dest.Offset(0, i - 1) = org.Range("F" & i)
ligne = 1
For l = 1 To org.[A65536].End(xlUp).Row
If org.Range("C" & l) = dest.Offset(0, i - 1) Then
dest.Offset(ligne, i - 1) = org.Range("A" & l)
ligne = ligne + 1
End If
Next l
Next i
End Sub


Bonne fin de semaine.

Rai

Cela fonctionne

mais j'ai voulus que les colonnes de la feuille 2 soit au bon format et
j'ai essayé (je débute) en insérant aprés Next i et avant End Sub :

Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Columns("A:A").EntireColumn.AutoFit
Columns("A:A").ColumnWidth = 25.43
Columns("A:A").Select
Selection.Copy
Columns("B:D").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
Application.CutCopyMode = False

mais j'obtients erreur d'exécution 1004

--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨ °ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº° ¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨ °ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº° ¨¨¨¨°




Avatar
Ctitout
Rai wrote:
C'est quoi "le bon format" ??
chaque format cellule destination = format cellule origine ??
format de la colonne entière ?? (par rapport à quelle colonne
d'origine) ?

rai

"Ctitout" a écrit dans le message de news:
eP9%
Rai wrote:
Bonjour,

Ci-dessous une proposition de solution.
Elle gère automatiquement le nombre de gérants, le nombre de villes.


Sub trie()
Set org = Sheets("Feuil1")
Set dest = Sheets("Feuil2").[A1]

For i = 1 To org.[F65536].End(xlUp).Row
dest.Offset(0, i - 1) = org.Range("F" & i)
ligne = 1
For l = 1 To org.[A65536].End(xlUp).Row
If org.Range("C" & l) = dest.Offset(0, i - 1) Then
dest.Offset(ligne, i - 1) = org.Range("A" & l)
ligne = ligne + 1
End If
Next l
Next i
End Sub


Bonne fin de semaine.

Rai

Cela fonctionne

mais j'ai voulus que les colonnes de la feuille 2 soit au bon format
et
j'ai essayé (je débute) en insérant aprés Next i et avant End Sub :

Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Columns("A:A").EntireColumn.AutoFit
Columns("A:A").ColumnWidth = 25.43
Columns("A:A").Select
Selection.Copy
Columns("B:D").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
Application.CutCopyMode = False

mais j'obtients erreur d'exécution 1004




les colonnes d'origine sur feuille 2 sont trop étroit de ce fait les
cellules sont tronqués, je voulais juste les élargir à environ 26 ( ici
c'était 25.43)
--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°



Avatar
Rai
entre le next l et le next i
insère la ligne suivante :
Sheets("Feuil2").Columns(i).AutoFit

par contre si tu veux une largeur uniforme il faudra soit spécifier une largeur prédéfinie
Sheets("Feuil2").Columns(i).ColumnWidth = 26

Rai



"Ctitout" a écrit dans le message de news:
Rai wrote:
C'est quoi "le bon format" ??
chaque format cellule destination = format cellule origine ??
format de la colonne entière ?? (par rapport à quelle colonne
d'origine) ?

rai

"Ctitout" a écrit dans le message de news:
eP9%
Rai wrote:
Bonjour,

Ci-dessous une proposition de solution.
Elle gère automatiquement le nombre de gérants, le nombre de villes.


Sub trie()
Set org = Sheets("Feuil1")
Set dest = Sheets("Feuil2").[A1]

For i = 1 To org.[F65536].End(xlUp).Row
dest.Offset(0, i - 1) = org.Range("F" & i)
ligne = 1
For l = 1 To org.[A65536].End(xlUp).Row
If org.Range("C" & l) = dest.Offset(0, i - 1) Then
dest.Offset(ligne, i - 1) = org.Range("A" & l)
ligne = ligne + 1
End If
Next l
Next i
End Sub


Bonne fin de semaine.

Rai

Cela fonctionne

mais j'ai voulus que les colonnes de la feuille 2 soit au bon format
et
j'ai essayé (je débute) en insérant aprés Next i et avant End Sub :

Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Columns("A:A").EntireColumn.AutoFit
Columns("A:A").ColumnWidth = 25.43
Columns("A:A").Select
Selection.Copy
Columns("B:D").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
Application.CutCopyMode = False

mais j'obtients erreur d'exécution 1004




les colonnes d'origine sur feuille 2 sont trop étroit de ce fait les
cellules sont tronqués, je voulais juste les élargir à environ 26 ( ici
c'était 25.43)
--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨ °ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº° ¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨ °ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº° ¨¨¨¨°






Avatar
Rai
Et si tu veux un ajustement automatique de TOUTES les colonnes à la plus grande largeur :
Sub trie()
fdest = "Feuil2"
Set org = Sheets("Feuil1")
Set dest = Sheets(fdest).[A1]

For i = 1 To org.[F65536].End(xlUp).Row
dest.Offset(0, i - 1) = org.Range("F" & i)
ligne = 1
For l = 1 To org.[A65536].End(xlUp).Row
If org.Range("C" & l) = dest.Offset(0, i - 1) Then
dest.Offset(ligne, i - 1) = org.Range("A" & l)
ligne = ligne + 1
End If
Next l
With Sheets(fdest).Columns(i)
.AutoFit
If largeur < .ColumnWidth Then
largeur = .ColumnWidth
Sheets(fdest).Range([A1], Cells(1, i)).ColumnWidth = largeur
End If
End With
Next i
End Sub


Bonne fin de semaine

Rai


"Ctitout" a écrit dans le message de news:
Rai wrote:
C'est quoi "le bon format" ??
chaque format cellule destination = format cellule origine ??
format de la colonne entière ?? (par rapport à quelle colonne
d'origine) ?

rai

"Ctitout" a écrit dans le message de news:
eP9%
Rai wrote:
Bonjour,

Ci-dessous une proposition de solution.
Elle gère automatiquement le nombre de gérants, le nombre de villes.


Sub trie()
Set org = Sheets("Feuil1")
Set dest = Sheets("Feuil2").[A1]

For i = 1 To org.[F65536].End(xlUp).Row
dest.Offset(0, i - 1) = org.Range("F" & i)
ligne = 1
For l = 1 To org.[A65536].End(xlUp).Row
If org.Range("C" & l) = dest.Offset(0, i - 1) Then
dest.Offset(ligne, i - 1) = org.Range("A" & l)
ligne = ligne + 1
End If
Next l
Next i
End Sub


Bonne fin de semaine.

Rai

Cela fonctionne

mais j'ai voulus que les colonnes de la feuille 2 soit au bon format
et
j'ai essayé (je débute) en insérant aprés Next i et avant End Sub :

Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Columns("A:A").EntireColumn.AutoFit
Columns("A:A").ColumnWidth = 25.43
Columns("A:A").Select
Selection.Copy
Columns("B:D").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse
Application.CutCopyMode = False

mais j'obtients erreur d'exécution 1004




les colonnes d'origine sur feuille 2 sont trop étroit de ce fait les
cellules sont tronqués, je voulais juste les élargir à environ 26 ( ici
c'était 25.43)
--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨ °ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº° ¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨ °ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº° ¨¨¨¨°






Avatar
Ctitout
Rai wrote:
Et si tu veux un ajustement automatique de TOUTES les colonnes à la
plus grande largeur :
Sub trie()

fdest = "Feuil2"
Set org = Sheets("Feuil1")
Set dest = Sheets(fdest).[A1]

For i = 1 To org.[F65536].End(xlUp).Row
dest.Offset(0, i - 1) = org.Range("F" & i)
ligne = 1
For l = 1 To org.[A65536].End(xlUp).Row
If org.Range("C" & l) = dest.Offset(0, i - 1) Then
dest.Offset(ligne, i - 1) = org.Range("A" & l)
ligne = ligne + 1
End If
Next l
With Sheets(fdest).Columns(i)
.AutoFit
If largeur < .ColumnWidth Then
largeur = .ColumnWidth
Sheets(fdest).Range([A1], Cells(1, i)).ColumnWidth = largeur
End If
End With
Next i
End Sub

si je supprime les lignes aprés next I
et avant End Sub
le transfert est bien exécuté mais les colonnes sont "trop étroites"
par contre si je passe la macro en entière elle bloque après avoir rempli
que la colone A en partie et en mélangeant les groupes
"Erreur d'exécution 1004 - Erreur définie par l'application ou par l'objet"

--

Ctitout B-{}

°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°
il ne faut pas mettre du vinaigre dans ses écrits,
il faut y mettre du sel. (Montesquieu)
°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°

1 2