Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

boucles sur les données d'une ListBox et variables

7 réponses
Avatar
modus57
Bonjour à tous.



Je galère sur les boucles de toutes les données d'une ListBox que je
souhaiterais passer dans des variables.



La ListBox à 3 colonnes contient :



Chemin complet du fichier Nom de
la feuille Nom du champ

C:\Documents and Settings\destination1.xls Feuil1
zone1

C:\Documents and Settings\destination2.xls Feuil2
zone2

C:\Documents and Settings\destination3.xls Feuil3
zone3



Comment remplacer les noms en dur par des variables dans mon code ???



Sub EcrireClasseurDestination()



ValeurSaisie = ActiveCell.Value

If ValeurSaisie = "" Then Exit Sub



For i = 0 To listBox1.listCount - 1



' activer le fichier ==> sinon l'ouvrir

Workbooks("destination1.xls").Activate

If Err <> 0 Then

Application.ScreenUpdating = False

Workbooks.Open Filename:="C:\Documents and
Settings\destination1.xls"

End If



Worksheets("Feuil1").Range("A:A").select

Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select



Réponse2 = MsgBox("Voulez-vous copier la valeur saisie : (" &
ValeurSaisie & ")" _

& vbLf & "et enregistré le classeur (destination1)", vbYesNo +
vbInformation)

If Réponse2 = vbYes Then

ActiveCell = ValeurSaisie

ActiveCell.Offset(0, 1).Select

Range("zone").Copy

ActiveSheet.Paste

ActiveCell.Offset(0, -1).Select

ActiveWorkbook.Save

End If



Application.ScreenUpdating = True



Next i



End sub



Une aide sera la bienvenue, merci d'avance @ +

7 réponses

Avatar
anonymousA
Bonjour,

suppossons donc que tu aies une listbox à 3 colonnes et supposons que
la porpriété BoundColumn de ton listbox soit égale à 1 alors, la
1ere instruction du groupe des instructions suivantes te renverra la
donnée de la colonne 1 et les 3 instructions suivantes te reverront
successivement les données des colonnes 1 à 3.
Pour te rendre compte ce qui suit est à placer p.e dans une procédure
ListBox1_Click

MsgBox Me.ListBox1.Value
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 2)

Si tu as compris le principe, il n'y aura aucune difficulté à faire
ce que tu souhaites

A+

modus57 wrote:
Bonjour à tous.



Je galère sur les boucles de toutes les données d'une ListBox que je
souhaiterais passer dans des variables.



La ListBox à 3 colonnes contient :



Chemin complet du fichier Nom de
la feuille Nom du champ

C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3



Comment remplacer les noms en dur par des variables dans mon code ???



Sub EcrireClasseurDestination()



ValeurSaisie = ActiveCell.Value

If ValeurSaisie = "" Then Exit Sub



For i = 0 To listBox1.listCount - 1



' activer le fichier ==> sinon l'ouvrir

Workbooks("destination1.xls").Activate

If Err <> 0 Then

Application.ScreenUpdating = False

Workbooks.Open Filename:="C:Documents and
Settingsdestination1.xls"

End If



Worksheets("Feuil1").Range("A:A").select

Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select



Réponse2 = MsgBox("Voulez-vous copier la valeur saisie : (" &
ValeurSaisie & ")" _

& vbLf & "et enregistré le classeur (destination1)", vbYesNo +
vbInformation)

If Réponse2 = vbYes Then

ActiveCell = ValeurSaisie

ActiveCell.Offset(0, 1).Select

Range("zone").Copy

ActiveSheet.Paste

ActiveCell.Offset(0, -1).Select

ActiveWorkbook.Save

End If



Application.ScreenUpdating = True



Next i



End sub



Une aide sera la bienvenue, merci d'avance @ +


Avatar
anonymousA
une petite amélioration

With Me.ListBox1
For I = 1 To .ColumnCount
MsgBox .List(.ListIndex, I - 1)
Next
End With

A+


anonymousA wrote:
Bonjour,

suppossons donc que tu aies une listbox à 3 colonnes et supposons que
la porpriété BoundColumn de ton listbox soit égale à 1 alors, la
1ere instruction du groupe des instructions suivantes te renverra la
donnée de la colonne 1 et les 3 instructions suivantes te reverront
successivement les données des colonnes 1 à 3.
Pour te rendre compte ce qui suit est à placer p.e dans une procédure
ListBox1_Click

MsgBox Me.ListBox1.Value
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 2)

Si tu as compris le principe, il n'y aura aucune difficulté à faire
ce que tu souhaites

A+

modus57 wrote:
Bonjour à tous.



Je galère sur les boucles de toutes les données d'une ListBox que je
souhaiterais passer dans des variables.



La ListBox à 3 colonnes contient :



Chemin complet du fichier Nom de
la feuille Nom du champ

C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3



Comment remplacer les noms en dur par des variables dans mon code ???



Sub EcrireClasseurDestination()



ValeurSaisie = ActiveCell.Value

If ValeurSaisie = "" Then Exit Sub



For i = 0 To listBox1.listCount - 1



' activer le fichier ==> sinon l'ouvrir

Workbooks("destination1.xls").Activate

If Err <> 0 Then

Application.ScreenUpdating = False

Workbooks.Open Filename:="C:Documents and
Settingsdestination1.xls"

End If



Worksheets("Feuil1").Range("A:A").select

Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select



Réponse2 = MsgBox("Voulez-vous copier la valeur saisie : (" &
ValeurSaisie & ")" _

& vbLf & "et enregistré le classeur (destination1)", vbYesNo +
vbInformation)

If Réponse2 = vbYes Then

ActiveCell = ValeurSaisie

ActiveCell.Offset(0, 1).Select

Range("zone").Copy

ActiveSheet.Paste

ActiveCell.Offset(0, -1).Select

ActiveWorkbook.Save

End If



Application.ScreenUpdating = True



Next i



End sub



Une aide sera la bienvenue, merci d'avance @ +




Avatar
modus57
Re bonjour anonymousA wrote.

La ListBox à 3 colonnes contient :
Chemin complet du fichier (col 1) Nom de
la feuille (col 2) Nom du champ (col 3)
C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3




J'ai utiliser ta piste, en copiant le code de ma procédure Sub
EcrireClasseurDestination() dans Private Sub ListBox1_Click(), mais je vois
pas comment récuperer les variables pour traiter les fichiers
<destination1.xls>, <destination2.xls>, <destination3.xls>.

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

une petite amélioration

With Me.ListBox1
For I = 1 To .ColumnCount
MsgBox .List(.ListIndex, I - 1)
Next
End With

A+


anonymousA wrote:
Bonjour,

suppossons donc que tu aies une listbox à 3 colonnes et supposons que
la porpriété BoundColumn de ton listbox soit égale à 1 alors, la
1ere instruction du groupe des instructions suivantes te renverra la
donnée de la colonne 1 et les 3 instructions suivantes te reverront
successivement les données des colonnes 1 à 3.
Pour te rendre compte ce qui suit est à placer p.e dans une procédure
ListBox1_Click

MsgBox Me.ListBox1.Value
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 2)

Si tu as compris le principe, il n'y aura aucune difficulté à faire
ce que tu souhaites

A+

modus57 wrote:
Bonjour à tous.



Je galère sur les boucles de toutes les données d'une ListBox que je
souhaiterais passer dans des variables.



La ListBox à 3 colonnes contient :



Chemin complet du fichier Nom
de
la feuille Nom du champ

C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3



Comment remplacer les noms en dur par des variables dans mon code ???



Sub EcrireClasseurDestination()



ValeurSaisie = ActiveCell.Value

If ValeurSaisie = "" Then Exit Sub



For i = 0 To listBox1.listCount - 1



' activer le fichier ==> sinon l'ouvrir

Workbooks("destination1.xls").Activate

If Err <> 0 Then

Application.ScreenUpdating = False

Workbooks.Open Filename:="C:Documents and
Settingsdestination1.xls"

End If



Worksheets("Feuil1").Range("A:A").select

Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select



Réponse2 = MsgBox("Voulez-vous copier la valeur saisie : (" &
ValeurSaisie & ")" _

& vbLf & "et enregistré le classeur (destination1)", vbYesNo +
vbInformation)

If Réponse2 = vbYes Then

ActiveCell = ValeurSaisie

ActiveCell.Offset(0, 1).Select

Range("zone").Copy

ActiveSheet.Paste

ActiveCell.Offset(0, -1).Select

ActiveWorkbook.Save

End If



Application.ScreenUpdating = True



Next i



End sub



Une aide sera la bienvenue, merci d'avance @ +




Avatar
anonymousA
Avec ce que je t'ai envoyé , tu peux récupérer l'ensemble des
éléments cliqués du Listbox.
Ensuite récupérer un morceau d'information ( en l'occurrence si je
comprends tout , le nom du fichier seulement dans la chaine de texte
comprenant aussi le répertoire) alors il faut faire appel à une autre
technique ( il faut Xcel2000 ou + ) que je te communique ci-dessous

Dans ce qui suit on veut extraire seulement destination1.xls de la
chaine de texte C:Documents and Settingsdestination1.xls.il faut
écrire l'instruction

MsgBox Split("C:Documents and Settingsdestination1.xls",
"")(UBound(Split("C:Documents and Settingsdestination1.xls", "")))

ou pour faire plus joli à voir

tampon = "C:Documents and Settingsdestination1.xls"
MsgBox Split(tampon, "")(UBound(Split(tampon, "")))

A+

modus57 wrote:
Re bonjour anonymousA wrote.

La ListBox à 3 colonnes contient :
Chemin complet du fichier (col 1) Nom de
la feuille (col 2) Nom du champ (col 3)
C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3




J'ai utiliser ta piste, en copiant le code de ma procédure Sub
EcrireClasseurDestination() dans Private Sub ListBox1_Click(), mais je vo is
pas comment récuperer les variables pour traiter les fichiers
<destination1.xls>, <destination2.xls>, <destination3.xls>.

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

une petite amélioration

With Me.ListBox1
For I = 1 To .ColumnCount
MsgBox .List(.ListIndex, I - 1)
Next
End With

A+


anonymousA wrote:
Bonjour,

suppossons donc que tu aies une listbox à 3 colonnes et supposons que
la porpriété BoundColumn de ton listbox soit égale à 1 alors, la
1ere instruction du groupe des instructions suivantes te renverra la
donnée de la colonne 1 et les 3 instructions suivantes te reverront
successivement les données des colonnes 1 à 3.
Pour te rendre compte ce qui suit est à placer p.e dans une procédu re
ListBox1_Click

MsgBox Me.ListBox1.Value
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 2)

Si tu as compris le principe, il n'y aura aucune difficulté à faire
ce que tu souhaites

A+

modus57 wrote:
Bonjour à tous.



Je galère sur les boucles de toutes les données d'une ListBox que je
souhaiterais passer dans des variables.



La ListBox à 3 colonnes contient :



Chemin complet du fichier N om
de
la feuille Nom du champ

C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3



Comment remplacer les noms en dur par des variables dans mon code ???



Sub EcrireClasseurDestination()



ValeurSaisie = ActiveCell.Value

If ValeurSaisie = "" Then Exit Sub



For i = 0 To listBox1.listCount - 1



' activer le fichier ==> sinon l'ouvrir

Workbooks("destination1.xls").Activate

If Err <> 0 Then

Application.ScreenUpdating = False

Workbooks.Open Filename:="C:Documents and
Settingsdestination1.xls"

End If



Worksheets("Feuil1").Range("A:A").select

Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select



Réponse2 = MsgBox("Voulez-vous copier la valeur saisie : (" &
ValeurSaisie & ")" _

& vbLf & "et enregistré le classeur (destination1)", vbYesNo +
vbInformation)

If Réponse2 = vbYes Then

ActiveCell = ValeurSaisie

ActiveCell.Offset(0, 1).Select

Range("zone").Copy

ActiveSheet.Paste

ActiveCell.Offset(0, -1).Select

ActiveWorkbook.Save

End If



Application.ScreenUpdating = True



Next i



End sub



Une aide sera la bienvenue, merci d'avance @ +






Avatar
modus57
Je reviens vers toi anonymousA wrote.



Car ton aide m'est très utile et je te remercie, autre possibilité la
ListBox1 pourrait contenir 4 colonnes :



La première contenant le nom des fichiers :

destination1.xls , destination2.xls , destination3.xls



La seconde contenant le chemin complet du fichier :

C:Documents and Settingsdestination1.xls

C:Documents and Settingsdestination2.xls

C:Documents and Settingsdestination3.xls



La troisième contenant le nom de la feuille :

Feuil1, Feuil2, Feuil3



La quatrième le nom du champ :

zone1, zone2, zone3



Mais je ne comprends toujours pas comment passer les éléments de la ListBox1
dans 4 variables, la première recevant le nom du fichier «
destination1.xls », la seconde recevant le chemin complet du fichier «
C:Documents and Settingsdestination1.xls », la troisième recevant le nom
de la feuille « Feuil1 » et enfin la quatrième le nom du champ « zone1 ».



Le but étant d'ouvrir le fichier « destination1.xls » d'automatiser la copie
de la valeur saisie dans la cellule active du classeur actif (source) et la
coller dans la première cellule vide de la colonne A de la feuille nommée
« Feuil1 » du classeur « destination1.xls » et copier dans la cellule
adjacente de droite le champ nommé « zone1 ».De fermer et d'enregistrer le
fichier.



Poursuivre la boucle pour le fichier « destination2.xls » et «
destination3.xls ».



Je ne suis pas un grand spécialiste c'est pourquoi dans le code de ma
procédure je n'arrive pas à passer les éléments de la ListBox1 dans les 4
variables.



J'espère que j'ai été assez clair et que ce fil continu à t'intéresser.



@ + modus57


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

Avec ce que je t'ai envoyé , tu peux récupérer l'ensemble des
éléments cliqués du Listbox.
Ensuite récupérer un morceau d'information ( en l'occurrence si je
comprends tout , le nom du fichier seulement dans la chaine de texte
comprenant aussi le répertoire) alors il faut faire appel à une autre
technique ( il faut Xcel2000 ou + ) que je te communique ci-dessous

Dans ce qui suit on veut extraire seulement destination1.xls de la
chaine de texte C:Documents and Settingsdestination1.xls.il faut
écrire l'instruction

MsgBox Split("C:Documents and Settingsdestination1.xls",
"")(UBound(Split("C:Documents and Settingsdestination1.xls", "")))

ou pour faire plus joli à voir

tampon = "C:Documents and Settingsdestination1.xls"
MsgBox Split(tampon, "")(UBound(Split(tampon, "")))

A+

modus57 wrote:
Re bonjour anonymousA wrote.

La ListBox à 3 colonnes contient :
Chemin complet du fichier (col 1) Nom
de
la feuille (col 2) Nom du champ (col 3)
C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3




J'ai utiliser ta piste, en copiant le code de ma procédure Sub
EcrireClasseurDestination() dans Private Sub ListBox1_Click(), mais je
vois
pas comment récuperer les variables pour traiter les fichiers
<destination1.xls>, <destination2.xls>, <destination3.xls>.

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

une petite amélioration

With Me.ListBox1
For I = 1 To .ColumnCount
MsgBox .List(.ListIndex, I - 1)
Next
End With

A+


anonymousA wrote:
Bonjour,

suppossons donc que tu aies une listbox à 3 colonnes et supposons que
la porpriété BoundColumn de ton listbox soit égale à 1 alors, la
1ere instruction du groupe des instructions suivantes te renverra la
donnée de la colonne 1 et les 3 instructions suivantes te reverront
successivement les données des colonnes 1 à 3.
Pour te rendre compte ce qui suit est à placer p.e dans une procédure
ListBox1_Click

MsgBox Me.ListBox1.Value
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 2)

Si tu as compris le principe, il n'y aura aucune difficulté à faire
ce que tu souhaites

A+

modus57 wrote:
Bonjour à tous.



Je galère sur les boucles de toutes les données d'une ListBox que je
souhaiterais passer dans des variables.



La ListBox à 3 colonnes contient :



Chemin complet du fichier
Nom
de
la feuille Nom du champ

C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3



Comment remplacer les noms en dur par des variables dans mon code ???



Sub EcrireClasseurDestination()



ValeurSaisie = ActiveCell.Value

If ValeurSaisie = "" Then Exit Sub



For i = 0 To listBox1.listCount - 1



' activer le fichier ==> sinon l'ouvrir

Workbooks("destination1.xls").Activate

If Err <> 0 Then

Application.ScreenUpdating = False

Workbooks.Open Filename:="C:Documents and
Settingsdestination1.xls"

End If



Worksheets("Feuil1").Range("A:A").select

Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select



Réponse2 = MsgBox("Voulez-vous copier la valeur saisie : (" &
ValeurSaisie & ")" _

& vbLf & "et enregistré le classeur (destination1)", vbYesNo +
vbInformation)

If Réponse2 = vbYes Then

ActiveCell = ValeurSaisie

ActiveCell.Offset(0, 1).Select

Range("zone").Copy

ActiveSheet.Paste

ActiveCell.Offset(0, -1).Select

ActiveWorkbook.Save

End If



Application.ScreenUpdating = True



Next i



End sub



Une aide sera la bienvenue, merci d'avance @ +






Avatar
anonymousA
je t'ai montré comment récupérer tous les éléments de la listbox
depuis la 1ere ligne avec toutes les colonnes et ce pour toutes les
lignes
Je vais essayer de détailler. Column.count va donner le nombre de
colonnes que contient le listbox.
Listindex va permettre de parcourir l'ensemble des lignes du listbox (
il faut noter que l'indice des lignes commence à 0 et ce jusqu'au
nombre total de lignes - 1 donc jusqu'à
ListCount - 1)
Dans l'exemple ci-dessous on affiche par un Msgbox l'ensemble des
éléments du ListBox.

With Me.ListBox1
For j = 0 To .ListCount - 1
For i = 1 To .ColumnCount
MsgBox .List(j, i - 1)
Next
Next
End With


Rien ne t'empêche au lieu d'afficher les éléments de récupérer
ceux-ci dans une variable. Ces variables te serviront alors pour
effectuer EcrireClasseurDestination.ll serait utile de donner à
EcrireClasseurDestination des paramètres et utiliser ces paramètres
dans la procédure EcrireClasseurDestination à la place des noms de
fichiers ou noms de fichierss complets ou feuille ou zone.

Exemple:EcrireClasseurDestination(nomfichier,nomfichiercomplet,feuille,zone)
On suppose que tu as 4 colonnes

With Me.ListBox1
For j = 0 To .ListCount - 1
EcrireClasseurDestination .List(j,0),.List(j, 1),.List(j,
2),.List(j, 3)
Next
End With

Dans ces conditions , la boucle s'effectuera sur toutes les lignes du
Listbox et à chaque passage de boucle les paramètres
.List(j,0),.List(j, 1),.List(j, 2),.List(j, 3) correspondront pour
chaque ligne du Listbox à ce qui est inscrit respectivement de la
colonne 1 à la colonne 4. Par exemple, lors du 1er passage de boucle
.List(j,0) est formellement équivalent à destination1.xls ,.List(j,
1) est formellement équivalent à C:Documents and
Settingsdestination1.xls,.List(j, 2) est formellement équivalent à
Feuil1,.List(j, 3) est formellement équivalent à zone1

J'espère avoir été clair.

A+

modus57 wrote:
Je reviens vers toi anonymousA wrote.



Car ton aide m'est très utile et je te remercie, autre possibilité la
ListBox1 pourrait contenir 4 colonnes :



La première contenant le nom des fichiers :

destination1.xls , destination2.xls , destination3.xls



La seconde contenant le chemin complet du fichier :

C:Documents and Settingsdestination1.xls

C:Documents and Settingsdestination2.xls

C:Documents and Settingsdestination3.xls



La troisième contenant le nom de la feuille :

Feuil1, Feuil2, Feuil3



La quatrième le nom du champ :

zone1, zone2, zone3



Mais je ne comprends toujours pas comment passer les éléments de la L istBox1
dans 4 variables, la première recevant le nom du fichier «
destination1.xls », la seconde recevant le chemin complet du fichier «
C:Documents and Settingsdestination1.xls », la troisième recevant l e nom
de la feuille « Feuil1 » et enfin la quatrième le nom du champ « zone1 ».



Le but étant d'ouvrir le fichier « destination1.xls » d'automatiser la copie
de la valeur saisie dans la cellule active du classeur actif (source) et la
coller dans la première cellule vide de la colonne A de la feuille nomm ée
« Feuil1 » du classeur « destination1.xls » et copier dans la cel lule
adjacente de droite le champ nommé « zone1 ».De fermer et d'enregis trer le
fichier.



Poursuivre la boucle pour le fichier « destination2.xls » et «
destination3.xls ».



Je ne suis pas un grand spécialiste c'est pourquoi dans le code de ma
procédure je n'arrive pas à passer les éléments de la ListBox1 da ns les 4
variables.



J'espère que j'ai été assez clair et que ce fil continu à t'int éresser.



@ + modus57


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

Avec ce que je t'ai envoyé , tu peux récupérer l'ensemble des
éléments cliqués du Listbox.
Ensuite récupérer un morceau d'information ( en l'occurrence si je
comprends tout , le nom du fichier seulement dans la chaine de texte
comprenant aussi le répertoire) alors il faut faire appel à une autre
technique ( il faut Xcel2000 ou + ) que je te communique ci-dessous

Dans ce qui suit on veut extraire seulement destination1.xls de la
chaine de texte C:Documents and Settingsdestination1.xls.il faut
écrire l'instruction

MsgBox Split("C:Documents and Settingsdestination1.xls",
"")(UBound(Split("C:Documents and Settingsdestination1.xls", "")))

ou pour faire plus joli à voir

tampon = "C:Documents and Settingsdestination1.xls"
MsgBox Split(tampon, "")(UBound(Split(tampon, "")))

A+

modus57 wrote:
Re bonjour anonymousA wrote.

La ListBox à 3 colonnes contient :
Chemin complet du fichier (col 1) Nom
de
la feuille (col 2) Nom du champ (col 3)
C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3




J'ai utiliser ta piste, en copiant le code de ma procédure Sub
EcrireClasseurDestination() dans Private Sub ListBox1_Click(), mais je
vois
pas comment récuperer les variables pour traiter les fichiers
<destination1.xls>, <destination2.xls>, <destination3.xls>.

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

une petite amélioration

With Me.ListBox1
For I = 1 To .ColumnCount
MsgBox .List(.ListIndex, I - 1)
Next
End With

A+


anonymousA wrote:
Bonjour,

suppossons donc que tu aies une listbox à 3 colonnes et supposons q ue
la porpriété BoundColumn de ton listbox soit égale à 1 alors, la
1ere instruction du groupe des instructions suivantes te renverra la
donnée de la colonne 1 et les 3 instructions suivantes te reverront
successivement les données des colonnes 1 à 3.
Pour te rendre compte ce qui suit est à placer p.e dans une procé dure
ListBox1_Click

MsgBox Me.ListBox1.Value
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 2)

Si tu as compris le principe, il n'y aura aucune difficulté à fai re
ce que tu souhaites

A+

modus57 wrote:
Bonjour à tous.



Je galère sur les boucles de toutes les données d'une ListBox q ue je
souhaiterais passer dans des variables.



La ListBox à 3 colonnes contient :



Chemin complet du fichier
Nom
de
la feuille Nom du champ

C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3



Comment remplacer les noms en dur par des variables dans mon code ? ??



Sub EcrireClasseurDestination()



ValeurSaisie = ActiveCell.Value

If ValeurSaisie = "" Then Exit Sub



For i = 0 To listBox1.listCount - 1



' activer le fichier ==> sinon l'ouvrir

Workbooks("destination1.xls").Activate

If Err <> 0 Then

Application.ScreenUpdating = False

Workbooks.Open Filename:="C:Documents and
Settingsdestination1.xls"

End If



Worksheets("Feuil1").Range("A:A").select

Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select



Réponse2 = MsgBox("Voulez-vous copier la valeur saisie : (" &
ValeurSaisie & ")" _

& vbLf & "et enregistré le classeur (destination1)", vbYesNo +
vbInformation)

If Réponse2 = vbYes Then

ActiveCell = ValeurSaisie

ActiveCell.Offset(0, 1).Select

Range("zone").Copy

ActiveSheet.Paste

ActiveCell.Offset(0, -1).Select

ActiveWorkbook.Save

End If



Application.ScreenUpdating = True



Next i



End sub



Une aide sera la bienvenue, merci d'avance @ +








Avatar
modus57
Bonjour anonymousA
J'ai trouver d'où vient le problème, c'est un problème de formulation
de <Fait référence à:> dans la boîte de dialogue <Définir un nom>
pour le nom <liste>
La formule est :
ÞCALER(Feuil3!$A$1:$D$1;1;0;NBVAL(Feuil3!$A:$A)-1)
au lieu de :
ÞCALER(Feuil3!$A$1:$D$1;1;0;NBVAL(Feuil3!$A:$D)-1)
Pour faire référence de la cellule A2 jusqu'à la dernière cellule
remplie de cette colonne.
Re merci pour ton aide tu as été super sympa.
Bonne journée et à un prochain fil avec plaisir.

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

Bonsoir anonymousA

J'ai eu du mal à piger, j'ai mis en application tes explications, cela

fonctionne sauf que je n'arrive pas à sortir de la boucle.

Pourrais-tu m'apporter une réponse, pour mieux comprendre

je te joins le fichier.

Merci pour ton excellente aide.



@ + modus57




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

je t'ai montré comment récupérer tous les éléments de la listbox
depuis la 1ere ligne avec toutes les colonnes et ce pour toutes les
lignes
Je vais essayer de détailler. Column.count va donner le nombre de
colonnes que contient le listbox.
Listindex va permettre de parcourir l'ensemble des lignes du listbox (
il faut noter que l'indice des lignes commence à 0 et ce jusqu'au
nombre total de lignes - 1 donc jusqu'à
ListCount - 1)
Dans l'exemple ci-dessous on affiche par un Msgbox l'ensemble des
éléments du ListBox.

With Me.ListBox1
For j = 0 To .ListCount - 1
For i = 1 To .ColumnCount
MsgBox .List(j, i - 1)
Next
Next
End With


Rien ne t'empêche au lieu d'afficher les éléments de récupérer
ceux-ci dans une variable. Ces variables te serviront alors pour
effectuer EcrireClasseurDestination.ll serait utile de donner à
EcrireClasseurDestination des paramètres et utiliser ces paramètres
dans la procédure EcrireClasseurDestination à la place des noms de
fichiers ou noms de fichierss complets ou feuille ou zone.

Exemple:EcrireClasseurDestination(nomfichier,nomfichiercomplet,feuille,zone)
On suppose que tu as 4 colonnes

With Me.ListBox1
For j = 0 To .ListCount - 1
EcrireClasseurDestination .List(j,0),.List(j, 1),.List(j,
2),.List(j, 3)
Next
End With

Dans ces conditions , la boucle s'effectuera sur toutes les lignes du
Listbox et à chaque passage de boucle les paramètres
.List(j,0),.List(j, 1),.List(j, 2),.List(j, 3) correspondront pour
chaque ligne du Listbox à ce qui est inscrit respectivement de la
colonne 1 à la colonne 4. Par exemple, lors du 1er passage de boucle
.List(j,0) est formellement équivalent à destination1.xls ,.List(j,
1) est formellement équivalent à C:Documents and
Settingsdestination1.xls,.List(j, 2) est formellement équivalent à
Feuil1,.List(j, 3) est formellement équivalent à zone1

J'espère avoir été clair.

A+

modus57 wrote:
Je reviens vers toi anonymousA wrote.



Car ton aide m'est très utile et je te remercie, autre possibilité la
ListBox1 pourrait contenir 4 colonnes :



La première contenant le nom des fichiers :

destination1.xls , destination2.xls , destination3.xls



La seconde contenant le chemin complet du fichier :

C:Documents and Settingsdestination1.xls

C:Documents and Settingsdestination2.xls

C:Documents and Settingsdestination3.xls



La troisième contenant le nom de la feuille :

Feuil1, Feuil2, Feuil3



La quatrième le nom du champ :

zone1, zone2, zone3



Mais je ne comprends toujours pas comment passer les éléments de la
ListBox1
dans 4 variables, la première recevant le nom du fichier «
destination1.xls », la seconde recevant le chemin complet du fichier «
C:Documents and Settingsdestination1.xls », la troisième recevant le
nom
de la feuille « Feuil1 » et enfin la quatrième le nom du champ « zone1 ».



Le but étant d'ouvrir le fichier « destination1.xls » d'automatiser la
copie
de la valeur saisie dans la cellule active du classeur actif (source) et
la
coller dans la première cellule vide de la colonne A de la feuille nommée
« Feuil1 » du classeur « destination1.xls » et copier dans la cellule
adjacente de droite le champ nommé « zone1 ».De fermer et d'enregistrer
le
fichier.



Poursuivre la boucle pour le fichier « destination2.xls » et «
destination3.xls ».



Je ne suis pas un grand spécialiste c'est pourquoi dans le code de ma
procédure je n'arrive pas à passer les éléments de la ListBox1 dans les 4
variables.



J'espère que j'ai été assez clair et que ce fil continu à t'intéresser.



@ + modus57


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

Avec ce que je t'ai envoyé , tu peux récupérer l'ensemble des
éléments cliqués du Listbox.
Ensuite récupérer un morceau d'information ( en l'occurrence si je
comprends tout , le nom du fichier seulement dans la chaine de texte
comprenant aussi le répertoire) alors il faut faire appel à une autre
technique ( il faut Xcel2000 ou + ) que je te communique ci-dessous

Dans ce qui suit on veut extraire seulement destination1.xls de la
chaine de texte C:Documents and Settingsdestination1.xls.il faut
écrire l'instruction

MsgBox Split("C:Documents and Settingsdestination1.xls",
"")(UBound(Split("C:Documents and Settingsdestination1.xls", "")))

ou pour faire plus joli à voir

tampon = "C:Documents and Settingsdestination1.xls"
MsgBox Split(tampon, "")(UBound(Split(tampon, "")))

A+

modus57 wrote:
Re bonjour anonymousA wrote.

La ListBox à 3 colonnes contient :
Chemin complet du fichier (col 1)
Nom
de
la feuille (col 2) Nom du champ (col 3)
C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3




J'ai utiliser ta piste, en copiant le code de ma procédure Sub
EcrireClasseurDestination() dans Private Sub ListBox1_Click(), mais je
vois
pas comment récuperer les variables pour traiter les fichiers
<destination1.xls>, <destination2.xls>, <destination3.xls>.

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

une petite amélioration

With Me.ListBox1
For I = 1 To .ColumnCount
MsgBox .List(.ListIndex, I - 1)
Next
End With

A+


anonymousA wrote:
Bonjour,

suppossons donc que tu aies une listbox à 3 colonnes et supposons que
la porpriété BoundColumn de ton listbox soit égale à 1 alors, la
1ere instruction du groupe des instructions suivantes te renverra la
donnée de la colonne 1 et les 3 instructions suivantes te reverront
successivement les données des colonnes 1 à 3.
Pour te rendre compte ce qui suit est à placer p.e dans une procédure
ListBox1_Click

MsgBox Me.ListBox1.Value
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 1)
MsgBox Me.ListBox1.List(Me.ListBox1.ListIndex, 2)

Si tu as compris le principe, il n'y aura aucune difficulté à faire
ce que tu souhaites

A+

modus57 wrote:
Bonjour à tous.



Je galère sur les boucles de toutes les données d'une ListBox que
je
souhaiterais passer dans des variables.



La ListBox à 3 colonnes contient :



Chemin complet du fichier
Nom
de
la feuille Nom du champ

C:Documents and Settingsdestination1.xls Feuil1
zone1

C:Documents and Settingsdestination2.xls Feuil2
zone2

C:Documents and Settingsdestination3.xls Feuil3
zone3



Comment remplacer les noms en dur par des variables dans mon code
???



Sub EcrireClasseurDestination()



ValeurSaisie = ActiveCell.Value

If ValeurSaisie = "" Then Exit Sub



For i = 0 To listBox1.listCount - 1



' activer le fichier ==> sinon l'ouvrir

Workbooks("destination1.xls").Activate

If Err <> 0 Then

Application.ScreenUpdating = False

Workbooks.Open Filename:="C:Documents and
Settingsdestination1.xls"

End If



Worksheets("Feuil1").Range("A:A").select

Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select



Réponse2 = MsgBox("Voulez-vous copier la valeur saisie : (" &
ValeurSaisie & ")" _

& vbLf & "et enregistré le classeur (destination1)", vbYesNo +
vbInformation)

If Réponse2 = vbYes Then

ActiveCell = ValeurSaisie

ActiveCell.Offset(0, 1).Select

Range("zone").Copy

ActiveSheet.Paste

ActiveCell.Offset(0, -1).Select

ActiveWorkbook.Save

End If



Application.ScreenUpdating = True



Next i



End sub



Une aide sera la bienvenue, merci d'avance @ +