Copier d'une ligne dans une zone
Le
Fredo(67)

Bonjour,
j'ai un tableau qui représente la liste des salariés de mon
entreprise.
Cette liste s'étend de A1 à NF150
En A les matricules, en B les noms, en C les prénoms, de D à NF les
jours de l'année
Les lignes 1 à 4 sont les en-têtes des colonnes
En regard de chaque ouvrier le nombre d'heures effectuée pour chaque
jour.
Ce que je voudrais, pour faciliter la saisie de mon opératrice c'est,
par macro,
recopier la saisie de la semaine sur l'ensemble des ouvriers.
Par exemple valeur G5=8; H5+8; I5+8; J5=8; K5=7
Si la semaine est "standard" alors Clic sur un bouton => et recopie de
ces valeur de la ligne 6 à la ligne 150.
De plus, il se peut que le nombre de ligne varie en fonction des
départs et des arrivées dans l'entreprise, d'où une variation de la
position de la dernière ligne.
J'avais pensé noter cette formule dans toutes les cellules de mon
tableau
en G6 : =G5
ce qui aurai copié toutes les saisies automatiquement, mais je préfèr=
e
qu'il y ait une intervention manuelle.
Quel pourrait être le code d'une telle macro ?
Merci
j'ai un tableau qui représente la liste des salariés de mon
entreprise.
Cette liste s'étend de A1 à NF150
En A les matricules, en B les noms, en C les prénoms, de D à NF les
jours de l'année
Les lignes 1 à 4 sont les en-têtes des colonnes
En regard de chaque ouvrier le nombre d'heures effectuée pour chaque
jour.
Ce que je voudrais, pour faciliter la saisie de mon opératrice c'est,
par macro,
recopier la saisie de la semaine sur l'ensemble des ouvriers.
Par exemple valeur G5=8; H5+8; I5+8; J5=8; K5=7
Si la semaine est "standard" alors Clic sur un bouton => et recopie de
ces valeur de la ligne 6 à la ligne 150.
De plus, il se peut que le nombre de ligne varie en fonction des
départs et des arrivées dans l'entreprise, d'où une variation de la
position de la dernière ligne.
J'avais pensé noter cette formule dans toutes les cellules de mon
tableau
en G6 : =G5
ce qui aurai copié toutes les saisies automatiquement, mais je préfèr=
e
qu'il y ait une intervention manuelle.
Quel pourrait être le code d'une telle macro ?
Merci
A ) Tu remplis la première ligne soit avec des formules ou des données de ton tableau de la colonne G à la colonne NF
B ) et pour recopier cette ligne sur l'ensemble des lignes du tableau, tu affectes cette macro à un bouton dans la feuille.
C ) Tu adaptes le nom de la feuille dans la procédure.
'-----------------------------------
Sub test1()
Dim DerLig As Long
With Worksheets("Feuil1") 'Nom feuille à adapter
DerLig = .Range("G:NF").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
.Range("G5:Nf" & DerLig).FillDown
End With
End Sub
'-----------------------------------
MichD
------------------------------------------
"Fredo(67)" a écrit dans le message de groupe de discussion :
Bonjour,
j'ai un tableau qui représente la liste des salariés de mon
entreprise.
Cette liste s'étend de A1 à NF150
En A les matricules, en B les noms, en C les prénoms, de D à NF les
jours de l'année
Les lignes 1 à 4 sont les en-têtes des colonnes
En regard de chaque ouvrier le nombre d'heures effectuée pour chaque
jour.
Ce que je voudrais, pour faciliter la saisie de mon opératrice c'est,
par macro,
recopier la saisie de la semaine sur l'ensemble des ouvriers.
Par exemple valeur G5=8; H5+8; I5+8; J5=8; K5=7
Si la semaine est "standard" alors Clic sur un bouton => et recopie de
ces valeur de la ligne 6 à la ligne 150.
De plus, il se peut que le nombre de ligne varie en fonction des
départs et des arrivées dans l'entreprise, d'où une variation de la
position de la dernière ligne.
J'avais pensé noter cette formule dans toutes les cellules de mon
tableau
en G6 : =G5
ce qui aurai copié toutes les saisies automatiquement, mais je préfère
qu'il y ait une intervention manuelle.
Quel pourrait être le code d'une telle macro ?
Merci
je vais tester ça de suite...
On 16 jan, 16:44, "MichD"
ça marche (qui en aurait douté)
maintenant, comment pourrait on modifier cette procédure pour que la
copie ne se fasse que sur les cellules sélectionnées..
càd qu'elle puisse copier 1 jour, 1 semaine, 1 mois selon la zone
qu'elle a sélectionné avant de cliquer sur le bouton ?
Merci
On 16 jan, 16:48, "Fredo(67)"
ce que devrait être la recopie.
MichD
------------------------------------------
"Fredo(67)" a écrit dans le message de groupe de discussion :
1er Feedback
ça marche (qui en aurait douté)
maintenant, comment pourrait on modifier cette procédure pour que la
copie ne se fasse que sur les cellules sélectionnées..
càd qu'elle puisse copier 1 jour, 1 semaine, 1 mois selon la zone
qu'elle a sélectionné avant de cliquer sur le bouton ?
Merci
On 16 jan, 16:48, "Fredo(67)"
- Parfois il faut copier la semaine (soit de la colonne G à L)
- Parfois c'est juste une journée (soit une colonne)
- Parfois c'est un moi entier (soit de la colonne BN à CR)
L'étendue de la copie doit être l'aplomb des cellules sélectionnées
par exemple Sélection : G5:L5 => G5 Doit être copié sur G6:G143; H 5
=> Sur H6:H143; I5 SUR I6:I143 et ainsi de suite...
On 16 jan, 17:48, "MichD"
dans la colonne A.
La sélection devrait comporter seulement une ligne...sinon c'est la première ligne de la sélection qui est utilisée par
défaut.
'----------------------------------
Sub test1()
Dim DerLig As Long, Adr As String
With Worksheets("Feuil1") 'Nom feuille à adapter
's'assurer que la sélection est dans ladite feuille
If Selection.Parent.Name = .Name Then
's'assurer que la sélection représente une plage de cellule
If TypeName(Selection) = "Range" Then
DerLig = .Range("A:A").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Adr = Selection.Rows(1).Address
.Range(Adr).Resize(DerLig - 1).FillDown
End If
End If
End With
End Sub
'----------------------------------
MichD
------------------------------------------
"Fredo(67)" a écrit dans le message de groupe de discussion :
Ben en fait elle me dit
- Parfois il faut copier la semaine (soit de la colonne G à L)
- Parfois c'est juste une journée (soit une colonne)
- Parfois c'est un moi entier (soit de la colonne BN à CR)
L'étendue de la copie doit être l'aplomb des cellules sélectionnées
par exemple Sélection : G5:L5 => G5 Doit être copié sur G6:G143; H5
=> Sur H6:H143; I5 SUR I6:I143 et ainsi de suite...
On 16 jan, 17:48, "MichD"
'-----------------------------------------
Sub test()
Dim DerLig As Long, Adr As String, Are As Range
With Worksheets("Feuil1") 'Nom feuille à adapter
's'assurer que la sélection est dans ladite feuille
If Selection.Parent.Name = .Name Then
's'assurer que la sélection représente une plage de cellule
If TypeName(Selection) = "Range" Then
DerLig = .Range("A:A").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
For Each are In Selection.Areas
Adr = are.Rows(1).Address
.Range(Adr).Resize(DerLig - 1).FillDown
Next
End If
End If
End With
End Sub
'-----------------------------------------
MichD
------------------------------------------
"Fredo(67)" a écrit dans le message de groupe de discussion :
Ben en fait elle me dit
- Parfois il faut copier la semaine (soit de la colonne G à L)
- Parfois c'est juste une journée (soit une colonne)
- Parfois c'est un moi entier (soit de la colonne BN à CR)
L'étendue de la copie doit être l'aplomb des cellules sélectionnées
par exemple Sélection : G5:L5 => G5 Doit être copié sur G6:G143; H5
=> Sur H6:H143; I5 SUR I6:I143 et ainsi de suite...
On 16 jan, 17:48, "MichD"
Et bien un grand merci à toi MichD
cela correspond parfaitement à ce que nous désirions.
Merci encore
On 16 jan, 20:37, "MichD"