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
...
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
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 ?
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.
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.
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
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