Copier coller des valeurs d'un userform vers un tableau Excel

benadry

XLDnaute Occasionnel
Bonjour le forum,

Je réalise un formulaire Excel avec différents types d'absences d'un salarié en indiquant des périodes.
Exemple, le salarié a été en congés du 1er juin 2014 matin au 13 juin 2014 après-midi.
Puis, il a été en RTT (par exemple) du 16 juin 2014 matin au 20 juin 2014 après-midi.
Puis, il a été de nouveau en congés du 23 juin 2014 au matin au 27 juin 2014 après-midi ...

L'utilisateur entre donc ces données dans un formulaire et les données sont copiées dans différentes colonnes du tableau Excel. Il ne faut, évidemment, pas mélanger les types d'absences et ne pas non plus les écraser.

Exemple, les congés sont sur la ligne 11 du tableau et les RTT sur la ligne 12. Il y a évidemment d'autres types d'absences (une vingtaine au total).

Les débuts d'absence sont sur la colonne T (textbox1 dans l'userform, date de début) et U (combobox1 dans l'userform, matin/après-midi) et les fins d'absence sur la colonne V (textbox2 dans l'userform, date de fin) et W (combobox2 dans l'userform, matin/après-midi), puis sur les colonnes Y, Z, AA, AB ...
Les colonnes X, AC ... contiennent les calculs.

Quel est le code pour que la macro copie chaque durée d'absence (4 colonnes) sur la bonne ligne (en fonction de l'absence), en utilisant 4 colonnes à partir de la T, puis en laissant une colonne vide, en réutilisant 4 colonnes ... ?

Cela donne :

Code:
If ComboBox3.Value = "Congés payés" Then
Range("L11").Value = ComboBox3.Value
....
End If
...

Je joins un petit fichier d'exemple.

Merci d'avance pour votre aide.

Cordialement.
 

Pièces jointes

  • Classeur1.xls
    76 KB · Affichages: 68
  • Classeur1.xls
    76 KB · Affichages: 82
  • Classeur1.xls
    76 KB · Affichages: 98

benadry

XLDnaute Occasionnel
Re : Copier coller des valeurs d'un userform vers un tableau Excel

Bonjour Camarchepas,

Le temps d'anonymiser les données et voici le formulaire.

Merci d'avance pour ton aide.

Cordialement.
 

Pièces jointes

  • Test2.xlsm
    154 KB · Affichages: 68
  • Test2.xlsm
    154 KB · Affichages: 75
  • Test2.xlsm
    154 KB · Affichages: 84

camarchepas

XLDnaute Barbatruc
Re : Copier coller des valeurs d'un userform vers un tableau Excel

Benadry,

Voici une macro à placer dans le code du userform

Attention si un code n'est pas connu dans la feuille , un message apparait et la copie ne ce fait pas

Code:
Private Sub ValiderSaisie_Click()
Dim Infos(1 To 4) As String
Dim Type_Even As String
Dim Trouve As Range
Dim Colonne As Integer
Infos(1) = TextBox1.Text
Infos(2) = ComboBox1.Text
Infos(3) = TextBox2.Text
Infos(4) = ComboBox2.Text
Type_Even = ComboBox3.Text
Set Trouve = Sheets("Accueil").Range("M:M").Find(Type_Even, lookat:=xlWhole)
If Trouve Is Nothing Then MsgBox "L'évenement : " & Type_Even & " n 'est pas prévu dans la feuille accueil", vbyesonly, "Alerte utilisateur": Exit Sub
Colonne = Sheets("Accueil").Range("AS" & Split(Trouve.Address, "$")(2)).End(xlToLeft).Column+1
If Colonne < 19 Then Colonne = 19
Sheets("Accueil").Range("A1:D1").Offset(Trouve.Row-1, Colonne) = Infos
End Sub

Cordialement ,
 

benadry

XLDnaute Occasionnel
Re : Copier coller des valeurs d'un userform vers un tableau Excel

Bonjour le forum,
Bonjour Camarchepas,

Merci pour ton aide, c'est très gentil !

Après avoir testé, j'ai juste modifié ton code à cette ligne-là

Code:
Colonne = Sheets("Accueil").Range("AS" & Split(Trouve.Address, "$")(2)).End(xlToLeft).Column + 1

Et j'ai mis

Code:
Colonne = Sheets("Accueil").Range("T" & Split(Trouve.Address, "$")(2)).End(xlToLeft).Column + 1

car les colonnes doivent commencer à se remplir à partir de la T.

Il y a malheureusement un petit problème. En effet, quand je veux entrer deux fois le même motif d'absence, la première série de données se colle bien dans les colonnes T, U, V, W ; mais, la seconde série écrase la première, alors qu'elle devrait se placer colonnes Y, Z, AA, AB, puis colonnes AD, AE, AF, AG (3e série), colonnes AI, AJ, AK, AL (4e série) et colonnes AN, AO, AP, AQ (5e série).

Est-ce que j'abuserais si je te demandais comment faire ?

Merci d'avance.

Cordialement.
 

camarchepas

XLDnaute Barbatruc
Re : Copier coller des valeurs d'un userform vers un tableau Excel

Bonjour,

J'ai monté cet macro dans le classeur avant de te l'envoyer , elle fonctionne trés bien .

En fait la colonne AS désigne la colonne la plus à droite possible , ensuite la fonction end(xltoleft) cherche vers la gauche,
pour calculer la colonne , donc à ne pas tooucher en fait.

Si tu veux modifier la colonne de départ c'est ici

If Colonne < 19 Then Colonne = 19 ou l'on fixe la colonne 19 comme la première.
 

camarchepas

XLDnaute Barbatruc
Re : Copier coller des valeurs d'un userform vers un tableau Excel

Encore moi,

Voici monté dans le classeur la macro trés légérement modifiée.



Cordialement
 

Pièces jointes

  • Test2.xlsm
    157 KB · Affichages: 74
  • Test2.xlsm
    157 KB · Affichages: 85
  • Test2.xlsm
    157 KB · Affichages: 97

benadry

XLDnaute Occasionnel
Re : Copier coller des valeurs d'un userform vers un tableau Excel

Re-,

Désolé de te déranger de nouveau, mais je viens de tester et de faire différents essais et ça ne marche pas.

En reprenant ton code, la copie des données de la première série se fait dans les colonnes AT, AU, AV et AW et les données de la seconde série les écrasent.

Je ne vois pas ce qu'il faut changer à ton code pour que les données soient collées en T, U, V, W, puis qu'une colonne soit laissée vide (X) et que les 4 suivantes soient utilisées (Y, Z, AA, AB), puis encore un vide (AC), puis 4 colonnes remplies (AD, AE, AF, AG) et cela jusqu'à AQ.

Help ! Je tâtonne beaucoup avec les macros et là, c'est un peu compliqué pour moi.

Merci d'avance.
 

camarchepas

XLDnaute Barbatruc
Re : Copier coller des valeurs d'un userform vers un tableau Excel

OK , alors on change de tactique,

J'ai vu pourquoi, ma zone de test n'étant pas similaire à la tienne surement.

Je faisais les test sur une ligne ou calcul n'était pas écrit donc non pris en compte.

Pour pallier au truc , une petite boucle avec un pas de 5 teste la prochaine partie vide



Code:
Private Sub ValiderSaisie_Click()
 Dim Infos(1 To 4) As String
 Dim Type_Even As String
 Dim Trouve As Range
 Dim Colonne As Integer
 Infos(1) = TextBox1.Text
 Infos(2) = ComboBox1.Text
 Infos(3) = TextBox2.Text
 Infos(4) = ComboBox2.Text
 Type_Even = ComboBox3.Text
 Set Trouve = Sheets("Accueil").Range("M:M").Find(Type_Even, lookat:=xlWhole)
 If Trouve Is Nothing Then MsgBox "L'évenement : " & Type_Even & " n 'est pas prévu dans la feuille accueil", vbyesonly, "Alerte utilisateur": Exit Sub

 For Colonne = 0 To 20 Step 5
 If Sheets("Accueil").Range("T1").Offset(Trouve.Row - 1, Colonne) = "" Then
   Sheets("Accueil").Range("T1:W1").Offset(Trouve.Row - 1, Colonne) = Infos: Exit For
 End If
 Next Colonne

 If Colonne = 25 Then MsgBox "Nombre d'évenements possibles dépassé"
 End Sub
 

benadry

XLDnaute Occasionnel
Re : Copier coller des valeurs d'un userform vers un tableau Excel

Re-,

Je viens de prendre connaissance de ton mail et de tester.

Ca marche impeccable !

Je vais essayer de comprendre ton code.

En tout cas, merci beaucoup pour ta patience et ta compétence.

Cordialement.
 

melltel

XLDnaute Junior
bonjour, svp je travaille sur un projet d'automatisation de plan de voilier. enfet mon soucis reside au fait que je ne parvient pas a copier les valeur du tableau et les inserer sur le userform de tel en sorte qu'a l'ouverture du fomulaire on directement les valeur sur le formulaire . merci de me comprendre et de me repondre
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 852
dernier inscrit
dthi16088