Transfert de données par useform

Angy1105

XLDnaute Junior
Transfert de données par userform

Bonjour à tous,
J’ai un petit souci de transfert de données!
Mon travail consiste à améliorer une démarche de recueil des données et comme je débute en VB, j'aimerais volontiers un peu d'aide.
J'ai crée un classeur "rapport" que plusieurs employés utiliseront pour remplir la feuille "trame". Celle-ci une fois renseignée et enregistrée dans un dossier choisi au préalable par l'utilisateur. Puis la feuille "trame" est réinitialisée automatiquement.

Je souhaite récupérer les données des différentes feuilles et les transférées dans un classeur "synthèse".
Pour cela, lors de l'utilisation de la feuille "trame", je voudrais activer dans le useform existant un bouton commande intitulé "Transfert fichier" qui permettrais avant l'enregistrement de celle-ci de renseigner le fichier "synthèse".
A savoir, que la feuille "trame" est utilisée environ 6 fois par mois.
J'ai essayé d'utiliser la formule [classeur.xls]Feuil1'!A1 mais lorsque je transfert les données et que j'enregistre mon fichier. Les données disparaissent, cela est du à la réinitialisation de ma feuille "trame"...
Je vous transmets les classeurs exemples et si vous avez d'autres idées que la mienne, faites moi signe.
En attendant, je parcours le forum pour essayer de trouver mon bonheur...

Bonne fin d'après midi et j'espère à bientôt.
 

Pièces jointes

  • Synthèse.xls
    25 KB · Affichages: 124
  • Synthèse.xls
    25 KB · Affichages: 127
  • Synthèse.xls
    25 KB · Affichages: 126
  • RAPPORT.zip
    47.3 KB · Affichages: 47
  • RAPPORT.zip
    47.3 KB · Affichages: 49
  • RAPPORT.zip
    47.3 KB · Affichages: 45
Dernière édition:
G

Guest

Guest
Re : Transfert de données par useform

Re,

Voici un code possible pour ton bouton Transfert Fichier du userform Menu.

Code:
Private Sub Transfertdonnées_Click()
    Dim wk As Workbook
    Dim Lig As Long
    Dim i As Byte
 
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
'-------------------------------------------------------------------
'                  Ouverture du fichier
'-------------------------------------------------------------------
    On Error Resume Next
    Set wk = Workbooks("Synthèse.xls")
    If Err > 0 Then
        Err.Clear
        Set wk = Workbooks.Open(ThisWorkbook.Path & "\Synthèse.xls")
    End If
    ThisWorkbook.Activate
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
 
    If Err.Number > 0 Then
        MsgBox "Erreur lors de l'ouverture du fichier synthèse.xls", vbCritical, "Exportation"
        Exit Sub
    End If
'----------------------------------------------------------------------
'                  Transfert des données
'----------------------------------------------------------------------
    On Error GoTo 0
    Lig = wk.Sheets("Feuil1").Range("A21").End(xlUp).Row + 1
    For i = 1 To 6
        wk.Sheets("Feuil1").Cells(Lig, i) = Sheets("Trame").Range("C3,C5,I24,K24,I26,K26").Areas(i)(1)
    Next i
'---------------------------------------------------------------------
'                       Fermeture du fichier synthèse
'---------------------------------------------------------------------
  If Not Wk is nothing then 
       Wk.save
       Wk.close
  End if
End Sub

A+
 

Angy1105

XLDnaute Junior
Re : Transfert de données par useform

:D Génial ça marche. Je vous remercie beaucoup.
Il me reste plus qu'à comprendre ce que vous avez fait et à l'adapter à mes classeurs.
Merci encore et bonne journée.

Angy.
 
Dernière édition:

Angy1105

XLDnaute Junior
Re : Transfert de données par useform

Bonjour Hasco et bonjour à tous,
J'ai un autre petit souci. Je souhaiterais transférer dans un classeur "Suivi" des données comme ce qui a été fait dans le classeur "Synthèse". J'ai copié le code ci-dessus mais je voudrais qu'à chaque fois qu'on mette une croix dans la colonne "Non", des informations soit transférées dans le classeur "suivi"
Le code me permet juste de copier la ligne 11 et je voudrais récupérer toutes les lignes où le "Non" a été inscrit. Existe-t-il un code pour cela qui me permettrait quand j'actionne le bouton commande "Transfert données" d'envoyer les différentes données à la fois dans le classeur "synthèse" et dans le classeur "suivi" ?

Ci joint le classeur "suivi".

Bonne journée à tous.
 

Pièces jointes

  • SUIVI.xls
    15 KB · Affichages: 106
  • SUIVI.xls
    15 KB · Affichages: 105
  • SUIVI.xls
    15 KB · Affichages: 103
G

Guest

Guest
Re : Transfert de données par useform

Bonjour Angy,

Si je comprends bien tu eux que toutes les lignes de rapport soient reportées dans suivis.xls si la colonne Non possède un x.

confirme moi cela et dis mois a quoi correspond NATURE DE L'ECART (suivis.xls) dans le fichier Rapport.xls

Je verrai cela cet après - midi.

A+
 
G

Guest

Guest
Re : Transfert de données par useform

Angy,

voici ton fichier modifié.
tu verras que j'ai modifié l'action du bouton quitter du userform Menu pour ne pas avoir à quitter l'application lors des tests.

D'ailleurs ce serait bien, pour une question ultérieure, si tu joins un fichier, que celui-ci ne modifie ni ne ferme Excel et qu'il aient des données à traiter pour les tests. Que le répondeur ne soit pas obligé de faire se travail supplémentaire.

Maintenant, tu as tous les élements en main. A toi éventuellement d'adapter. vu ce que tu as déjà fait tu en es capable.


A+
 

Angy1105

XLDnaute Junior
Re : Transfert de données par useform

Bonjour le forum,

J'ai un petit souci lors du transfert de mes données, je souhaite transférer les données dans la ligne 9 mais à partir de la colonne C.
Le code marche bien mais le transfert ce fait à la colonne A de la ligne 9. Je ne trouve pas mon erreur.

j'utilise le code transmis par Hasco (voir ci-dessus)
Je pense que le problème vient de cette partie du code :

On Error GoTo 0
Lig = wk.Sheets("Feuil1").Range("A21").End(xlUp).Row + 1
For i = 1 To 6
wk.Sheets("Feuil1").Cells(Lig, i) = Sheets("Trame").Range("J24,L24,L26,J26").Areas(i)(1)
Next i

Une aide serait la bienvenue car je n'y arrive pas toute seule...

Bonne journée à tous et à toutes.
 

jp14

XLDnaute Barbatruc
Re : Transfert de données par useform

Bonjour


Bonjour le forum,

J'ai un petit souci lors du transfert de mes données, je souhaite transférer les données dans la ligne 9 mais à partir de la colonne C.
Le code marche bien mais le transfert ce fait à la colonne A de la ligne 9. Je ne trouve pas mon erreur.

On Error GoTo 0
Lig = wk.Sheets("Feuil1").Range("A21").End(xlUp).Row + 1
For i = 1 To 6
wk.Sheets("Feuil1").Cells(Lig, i) = Sheets("Trame").Range("J24,L24,L26,J26").Areas(i)(1)
Next i
.
Il faut modifier cette ligne
For i = 1 To 6
Traduction
Pour i = colonne 1 a la colonne 6
Si on désire commencer à la colonne C soit 3 il faut écrire
For = = 3 to 6

JP
 

Angy1105

XLDnaute Junior
Re : Transfert de données par useform

Bonjour JP14

Merci pour votre aide,

j'ai fait la modification et il y a une erreur dans cette phrase :

wk.Sheets("Feuil1").Cells(Lig, i) = Sheets("Trame").Range("J24,L24,L26,J26").Areas(i)( 1)

En fait, il copie la cellule L26 et J26 mais pas les deux premières.
J'avais déjà essayé cette solution mais je ne trouve pas l'erreur.


Bonne journée.
 

jp14

XLDnaute Barbatruc
Re : Transfert de données par useform

Bonjour (re) Angy1105

A tester

For i = 1 To 4

wk.Sheets("Feuil1").Cells(Lig, i+2)=Sheets("Trame").Range("J24,L24,L26,J26").Areas(i)( 1)

Comme l'index est utilisé dans la deuxième partie de l'affectation, on ne modifie pas sa valeur mais la colonne dans la destination.

JP
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
127

Statistiques des forums

Discussions
312 217
Messages
2 086 352
Membres
103 195
dernier inscrit
martel.jg