Iniatlisation listview

re

donc concernant le classeur test-11 de 15h57 j'ai fait une modif sur le bouton qui créer une feuille en créant l'entête en même temps

voici

Private Sub CommandButton2_Click()
Dim chemin$, acell, vcell, i As Byte
chemin = "c:\facturation-test\commandes\" 'chemin d'accès à adapter
On Error Resume Next 'par exemple si ComboBox1 est vide
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
.[B1].ColumnWidth = 43.67: .[C1].ColumnWidth = 3.67
.[D1].ColumnWidth = 4.67: .[E1].ColumnWidth = 5.67
.[F1].ColumnWidth = 10.67: .[G1].ColumnWidth = 12.67
.[H1].ColumnWidth = 4: .[B5] = ComboBox1 'en-tête
With .[A1]
.RowHeight = 27
.ColumnWidth = 12.75
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
.Name = ComboBox1
.[F2]=date
.[F3]=date+40
acell = Array("A5", "A6", "B1", "B2", "B3", "B4", "B7", "C1", "C2", "C3", "C4", "C7", "D7")
vcell = Array("Fournisseurs", "N° d'offre", "entreprise", "Affaire suivi par : Pascal", "adresse", "cp et ville", "désignation", _
"Bon de commande n°:", "ville le :", "début début travaux:", "référence client", "Unité", "quantité")
For i = LBound(acell) To UBound(acell)
.Range(acell(i)) = vcell(i)
Next i
.Range("B1:B7,A5:A6,C1:F4,C7:C8,C5:F5").Borders.LineStyle = 1
.Range("C5:F5").MergeCells = True
'suite des mises en forme de la feuille
.Parent.SaveAs chemin & ComboBox1
'.Parent.Close False 'facultatif
End With
End Sub

ca doit etre cette ligne qui empêche

With Workbooks("monClasseurBase_V01")

car autrement le chemin est bon dans

Set Fichier = Workbooks.Open("C:\Facturations\base\fournisseurs\" & chemin)

mais dans fournisseurs j'ai des sous-dossiers nommés au nom de mes fournisseurs

par exemple pour "rouenel" il faudrait

Workbooks.Open("C:\Facturations\base\fournisseurs\rouenel\

Pascal

Bonsoir

effectivement, j'ai fais une boulette

le nom du fichier est dans la variable chemin

il aut donc remplacer

With Workbooks("monClasseurBase_V01")

par

With Workbooks(Chemin)

bonsoir bob

merci de tes efforts et du fichier , mais cette fois il n'y a plus de sauvegarde nulle part même en changeant le chemin dans c:

voici le code

Private Sub CommandButton1_Click()
'copie les lignes selectionnées dans la colonne G
Dim i As Integer
Dim rg As Range
Dim Fichier As Workbook
Dim chemin As String

chemin = UserForm1.ComboBox1
Application.ScreenUpdating = False
On Error Resume Next
Set Fichier = Workbooks.Open("C:\Facturations\base\fournisseurs\" & chemin)

With Workbooks(chemin)
    'on boucle sur tous les éléments du Listview
    For i = 1 To UserForm1.ListView1.ListItems.Count
    'et on copie uniquement les items sélectionnées
    If UserForm1.ListView1.ListItems(i).Checked = True Then
      .Sheets(1).Range("M65536").End(xlUp).Offset(1, 0) = UserForm1.ListView1.ListItems(i)
      .Sheets(1).Range("M65536").End(xlUp).Offset(0, 1) = CDbl(UserForm1.ListView1.ListItems(i).ListSubItems(1))
      .Sheets(1).Range("M65536").End(xlUp).Offset(0, 2) = CDbl(UserForm1.ListView1.ListItems(i).ListSubItems(3))
   End If
Next i
   .Close (1)
End With
Application.ScreenUpdating = True
End Sub

re

est ce le bon chemin du fichier

la variable chemin représente le nom du fichier soit par exemple "Rouenel"

Set Fichier = Workbooks.Open("C:\Facturations\base\fournisseurs\" & chemin)

re

oui c'est le bon chemin et au bout de "fournisseurs" il y a des sous dossiers

c'est d'ailleurs ce que je t'avais dit dans le post de 18h50

Pascal

re

que signifie sous dossier?

des fichiers?

re bob

je te joints un aperçu jpeg de ce que j’appelle sous dossiers

comme cela tu le chemin en haut également

Pascal

Re bonsoir

ce sont des dossiers et non des fichiers

le chemin n'est donc pas correct

dans chaque dossier, tu dois avoir un fichier excel

c'est ce chemin qu'il faut, celui du fichier excel

re bob

pas de souci je te créer des fichiers excel en lieu et place

Pascal

ca y est c'est fait et c'est mieux, mais une chose que je pense peut-on donné un nom où un n° aux feuilles crées car normalement je me fournis plus d'une fois chez le même fournisseurs

a demain la suite car mon rhume pèse sur la fatigue

Pascal

bonjour Bob71au

merci beaucoup cela fonctionne bien le seul manque est le haut page automatique qui était sur l'autre fichier et que j'ai essayer mais une feuille s'est créer correctement mais les données sont aller sur l'autre feuille sous c:

Pascal

Bonjour grisan29

je ne comprends pas bien la question

peut être est ce nom de la feuille qui n'est pas adaptée

j'ai mis dans la macro sheets(1) par défaut

il faut certainement créer une feuille dans chaque classeur avec le même nom et modifier la feuille de destination dans la macro

bonjour Bob

il faut certainement créer une feuille dans chaque classeur avec le même nom et modifier la feuille de destination dans la macro

je pense que ce serai la solution où effacer la feuille après impression et repartir a zéro

pour répondre a ta question c'est parce que j'ai essayer d'adapter le code du bouton "créer une feuille avec entête" que j'ai dit cela, mais depuis j'ai mis l'entête a chaque feuille et cela fonctionne bien

autre chose je suis en cours d'essai et je viens de m'apercevoir de quelque chose

donc quand je coche les lignes correspondantes a un fournisseurs , elles vont bien dans la feuille adéquate, mais il faut décocher les lignes pour ne pas quelles aillent dans un autre fournisseur

donc sur un même devis j'ai plusieurs fournisseurs, y aurait 'il une solution a ce désagrément

en fait c'est lors de la réception de l'accord d'un devis que je voudrais dispatcher a tous les fournisseurs leur bon de commande

Pascal

Re

toujours aussi pas clair

tu voudrais que les cases se décochent?

re

oui quand j'ai envoyer des lignes dans une feuille et que je change de fournisseurs dans la combobox, il faudrait que les cases cochées soient décocher, car je ne vais pas mettre du placos dans la feuille d'un vendeur de cuisines pour les supprimées par la suite

Pascal

re

je l'ai placé dans le changement du combobox mais tu peux

soit le mettre sur un bouton

soit en fin de macro d'exportation

Private Sub ComboBox1_Change()
Dim i As Integer
If UserForm1.ComboBox1.ListIndex <> -1 Then
  For i = 1 To UserForm1.ListView1.ListItems.Count
    If UserForm1.ListView1.ListItems(i).Checked = True Then UserForm1.ListView1.ListItems(i).Checked = False
  Next i
End If
End Sub

bonjour BOB

Merci beaucoup de ton implication a ce post ce dernier code magnifique comme le reste, mets fin a ce post et me laisse le loisir de le greffer a mon classeur de facturation mais cela ce fera ce soir où plus tard car je quitte pour ce matin (famille oblige)

ce qui clos le post

Pascal

Bonjour Grisan29, Bob71au

Je vois qu'il y a une évolution positive dans la résolution du problème

Merci à Bob71au pour la perche.

Bon courage à toi Grisan29.

Je teste le fichier de mon côté et ne manquerai pas de revenir

en attendant Bon Dimanche

Re

Grisan29

BOB71AU

J'ai testé les codes mais j'ai deux remarques à faire

1/ le transfert envoie toutes les lignes dès qu'on sélectionne une ligne de la listview (je ne sais pas si c'est voulu ainsi)

sinon moi j'ai mis la listview à multiselect = true et changé le "ListItems(i).checked " à " ListItems(i).selected"

Ainsi j'envoie les lignes que je veux.

2/Le transfert se fait à partir de la ligne M8 de la feuille de destination. Pourquoi?

Le reste est bon pour moi

Re merci

A+

Bonsoir Bakh

le point 1 que tu soulève est en fait ce que je demandais au début , mais je me serai contenter de ta solution si bob75au n'aurais pas fait irruption dans le post

le point 2 est resté tel qu'au début et j'ai modifié pour commencer en A8

merci de ton aide et bon courage pour la suite

Pascal

Bonsoir Grisan29

Je n'avais vu la suite des post de BOB71AU

Merci à toi

Le fil est clos pour moi aussi

Rechercher des sujets similaires à "iniatlisation listview"