Problème pour copier des valeurs en VBA

brux40

XLDnaute Nouveau
Bonjour le forum,

Je me tourne vers vous car j'ai un petit problème au niveau de la programmation VBA et je n'arrive pas à trouver la solution seul.

Alors j'ai crée dans un USERFORM un liste copiant tous titres de paramètres de mon tableau. Et en cliquant sur un titre de la liste, j'aimerais que les valeurs appartenant à ce titre se copie autimatiquement dans un autres onglet.

Voici le programme
Code:
Private Sub UserForm_Initialize()

Dim i As Integer
Dim Valeurs As Variant
Dim a As Object
Set a = CreateObject("Scripting.Dictionary")
    'efface le contenu de la listbox
ListBoxdiffus.Clear
    'avec la feuille base de donnée.
With Sheets("calcul")
        'Pour aller plus vite on charge les valeurs dans un tableau
    Valeurs = .Range("B17:S17").Value
    For i = LBound(Valeurs, 2) To UBound(Valeurs, 2)
    If Not IsEmpty(Valeurs(1, i)) Then a(Valeurs(1, i)) = ""
    Next i
End With
If IsArray(Valeurs) Then ListBoxdiffus.List = a.keys


End Sub

Private Sub ListBoxdiffus_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Dim j As Integer
Dim valeur As Variant
Dim i As Integer


With Sheets("calcul")
    valeur = .Range("B17:S17").Value
    For i = LBound(valeur, 2) To UBound(valeur, 2)
    For j = LBound(valeur) To UBound(valeur)
    'chargement des valeurs MCI
'Sheets("Diffusion").Cells(17, 2).Value = ListBoxdiffus

If valeur(1, i) = ListBoxdiffus Then
.Range("i" & j + 17 & ":i" & j + 26).Copy

End If
Next j
Next i
End With
    

End Sub

Avec ce code j'arive bien à copier les entêtes dans la liste mais en cliquant sur le l'entête dont je souhaite copié les valeurs dans un autre onglet. Sa ne fonctionne pas, il copie tout le temps la même colonne. Je compren ce qu'il copie mais je ne sais pas le modifié pour que le programme tienne compte de mes choix.

Code:
.Range("i" & j + 17 & ":i" & j + 26).Copy
Il me copie que la colonne "i" alors que c'est une variable.

Un autre soucis, j'aimerais copié plusieurs colonnes dans mon autre onglet et je ne vois absolument pas comment je peux faire.

Je mets en copie mon fichier de travail.

Merci d'avance pour votre aide.

Brux
 

Pièces jointes

  • Brux40test automatique.xlsm
    66.8 KB · Affichages: 47

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème pour copier des valeurs en VBA

Bonjour Brux, Matt, bonjour le forum,

je trouve ton code d'initialisation très chargé pour une seule ligne à récupérer. L'utilisation d'un dictionnaire sert à éviter les doublons. Ce n'est visiblement pas ton cas...
On pourrait simplifier comme ça :
Code:
Private Sub UserForm_Initialize()
Me.ListBoxdiffus.List = Application.Transpose(Sheets("calcul").Range("D17:S17"))
End Sub

Private Sub ListBoxdiffus_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim col As Byte
col = Me.ListBoxdiffus.ListIndex + 4
With Sheets("calcul")
   .Range(.Cells(18, col), .Cells(27, col)).Copy
End With
End Sub
 

brux40

XLDnaute Nouveau
Re : Problème pour copier des valeurs en VBA

Re bonjour le forum,

Merci beaucoup pour votre aide.

J'ai encore un petit souci dazns mon fichier (je débute en VBA). Une fois le découpage sélectionné dans la liste, on copie les valeurs de ce découpage dans un, autre onglet de mon fichier. Mais j'aimerais copié plusieurs découpages (maximum 27).

J'ai donc créer un boucle à partir du programme de Robert.
Code:
Private Sub ListBoxdiffus_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim col As Byte
col = Me.ListBoxdiffus.ListIndex + 4
With Sheets("calcul")
For i = 2 To 28
   .Range(.Cells(18, col), .Cells(27, col)).Copy
   Sheets("Diffusion").Select
   Cells(18, i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False  'MCI partie ref
   .Range(.Cells(38, col), .Cells(47, col)).Copy
   Sheets("Diffusion").Select
   Cells(30, i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False  'MCI partie comparatif
   .Range(.Cells(54, col), .Cells(63, col)).Copy
   Sheets("Diffusion").Select
   Cells(42, i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False  'MCI partie étudié
Next i
End With

End Sub
Mais avec ce programme, je copie 27 fois le même découpages. Or je cherche à avoir la possibilité de copié 27 découpages.

Je pense qu'il s'agit d'une petite erreur de ma part.

Merci d'avance pour votre aide
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème pour copier des valeurs en VBA

Bonjour le fil, bonjour le forum,

Brux, je ne comprends pas ton raisonnement... Voilà ce que je te propose. Tu mets en pièce jointe un autre fichier avec uniquement les onglets qui concernent le code. Tu visualises (en entourant ou avec des flèches et des couleurs) les données que tu voudrais traiter. Donc ce que tu as avant la macro et tu montres ce que voudrais après. Peut-être ça sera plus clair...
 

brux40

XLDnaute Nouveau
Re : Problème pour copier des valeurs en VBA

Bonjour Robert,

Désolée de ne pas t'avoir répondu plus tot. A partir de la liste que je crée avec chaque en-tête, en cliquant sur ceux qui nous interesse, on copie les valeurs associés à cet en-tête. Mais j'aimerais copié les valeurs sélectionnées dans un autre onglet, j'ai donc crée une macro (avec ton aide) qui copie les valeurs. Jusque la tout va bien. Et j'aimerais avoir la possibilité de collé ces valeurs dans un autres onglet. Et j'aimerais pouvoir copié collé plusieurs valeurs différentes...

Voici le fichier qui correspond à mon problème actuel.

A l'heure actuelle je copie plusieurs fois les même valeurs. Et ce qui m'interresserait serait de copier plusieurs valeurs différentes.

J'espère avoir été plus clair.

Merci de ton aide
 

Pièces jointes

  • Brux40test automatique-modif.xlsm
    36.8 KB · Affichages: 34

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème pour copier des valeurs en VBA

Bonjour Brux, bonjour le forum,

Je t'expliquais dans mon post précédent qu'il serait bon que tu mettes Avant et Après, pour qu'on comprenne mieux... Tu ne l'as pas fait et malgré tes explications je n'ai toujours pas compris ce que tu voulais. Fait un effort si tu veux obtenir des réposes...
D'autre part, je ne dispose que de la version 2003 et quand j'ouvre tes fichiers avec un converstisseur les boutons ne fonctionnent pas. Je préfèrerais que tu enregistres aussi ton fichier pour Excel 2003.
 

brux40

XLDnaute Nouveau
Re : Problème pour copier des valeurs en VBA

Bonjour le forum,

Avant la macro je viens inscrire les entête (A11.............BV) de mon tableau de l'onglet "calcul" dans une listbox de mon USERFORM
Chaque entête possède 10 valeurs en colonne rangés dans un tableau. l'USERFORM se lance en cliquant sur le bouton "Copie Valeurs".

Après la macro, je veux avoir la possibilité de copié toute la colonne d'un en tête dans l'onglet diffusion, en double cliquant sur les en-tête de la liste correspondant à ma demande. Dans le programme que je crée je copie uniquement une colonne 27 fois.

Or je souhaite copié plusieurs colonnes au lieu d'une seule plusieurs fois.

J'espère avoir été plus clair. J'ai également modifier le format du fichier.

Merci beaucoup de ton aide.
 

Pièces jointes

  • Brux40test automatique-modif.xls
    75.5 KB · Affichages: 40

Discussions similaires

Réponses
11
Affichages
296

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote