Bonjour,
J'ai créé un fichier Excel avec, dans la colonne «A», les chiffres de
1 à 31 (jours du mois).
Dans la colonne «B», l'utilisateur indique le nombre de travaux
accomplis en cette journée.
Dans les autres colonnes, il y a:
- Des données entrées par l'utilisateurs au sujet du travail;
- Des formules qui renvoies un résultat à l'utilisateur.
J'aimerais que chaque fois qu'il inscrit un nombre de travaux plus
grand que «1», un nombre de rangées équivalent au nombre de travaux
-1, s'insère automatiquement en dessous pour qu'il puisse entrer les
données de chaque travail, avec la même date dans la colonne «A», et
les mêmes formats de cellule et les mêmes formules que dans la rangée
précédente.
Normalement, je travaille avec Access, mais ce client voudrait avoir
ça en Excel, ce qui me complique beaucoup les choses, car je m'y
connait peu en Excel.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Fauconnier
Bonsoir
Tu peux copier cette macro dans le module de la feuille concernée. Ici, toute la ligne est recopiée pour une valeur en B > 1, ce qui fait que si tu entres 2 en B, le 2 est recopié également.
Note également que si la personne avait saisi 2, puis qu'elle corrige en saisissant 3, elle insérera au total 5 lignes. La macro est donc à fignoler en fonction de ce que tu souhaites obtenir
-- Cela convient-il? ---- Pierre Fauconnier "Si j'étais Dieu, je démissionnerais pour que les gens arrêtent de se battre en mon nom." (Le Chat...) (remplacer NOSPAM par pfi pour me répondre. Merci)
--- MonOncle wrote:
Bonjour, J'ai créé un fichier Excel avec, dans la colonne «A», les chiffres de 1 à 31 (jours du mois).
Dans la colonne «B», l'utilisateur indique le nombre de travaux accomplis en cette journée.
Dans les autres colonnes, il y a: - Des données entrées par l'utilisateurs au sujet du travail; - Des formules qui renvoies un résultat à l'utilisateur.
J'aimerais que chaque fois qu'il inscrit un nombre de travaux plus grand que «1», un nombre de rangées équivalent au nombre de travaux -1, s'insère automatiquement en dessous pour qu'il puisse entrer les données de chaque travail, avec la même date dans la colonne «A», et les mêmes formats de cellule et les mêmes formules que dans la rangée précédente.
Normalement, je travaille avec Access, mais ce client voudrait avoir ça en Excel, ce qui me complique beaucoup les choses, car je m'y connait peu en Excel.
Merci! MonOncle
Bonsoir
Tu peux copier cette macro dans le module de la feuille concernée. Ici,
toute la ligne est recopiée pour une valeur en B > 1, ce qui fait que si tu
entres 2 en B, le 2 est recopié également.
Note également que si la personne avait saisi 2, puis qu'elle corrige en
saisissant 3, elle insérera au total 5 lignes. La macro est donc à fignoler
en fonction de ce que tu souhaites obtenir
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens arrêtent de se battre
en mon nom." (Le Chat...)
(remplacer NOSPAM par pfi pour me répondre. Merci)
---
MonOncle wrote:
Bonjour,
J'ai créé un fichier Excel avec, dans la colonne «A», les chiffres de
1 à 31 (jours du mois).
Dans la colonne «B», l'utilisateur indique le nombre de travaux
accomplis en cette journée.
Dans les autres colonnes, il y a:
- Des données entrées par l'utilisateurs au sujet du travail;
- Des formules qui renvoies un résultat à l'utilisateur.
J'aimerais que chaque fois qu'il inscrit un nombre de travaux plus
grand que «1», un nombre de rangées équivalent au nombre de travaux
-1, s'insère automatiquement en dessous pour qu'il puisse entrer les
données de chaque travail, avec la même date dans la colonne «A», et
les mêmes formats de cellule et les mêmes formules que dans la rangée
précédente.
Normalement, je travaille avec Access, mais ce client voudrait avoir
ça en Excel, ce qui me complique beaucoup les choses, car je m'y
connait peu en Excel.
Tu peux copier cette macro dans le module de la feuille concernée. Ici, toute la ligne est recopiée pour une valeur en B > 1, ce qui fait que si tu entres 2 en B, le 2 est recopié également.
Note également que si la personne avait saisi 2, puis qu'elle corrige en saisissant 3, elle insérera au total 5 lignes. La macro est donc à fignoler en fonction de ce que tu souhaites obtenir
-- Cela convient-il? ---- Pierre Fauconnier "Si j'étais Dieu, je démissionnerais pour que les gens arrêtent de se battre en mon nom." (Le Chat...) (remplacer NOSPAM par pfi pour me répondre. Merci)
--- MonOncle wrote:
Bonjour, J'ai créé un fichier Excel avec, dans la colonne «A», les chiffres de 1 à 31 (jours du mois).
Dans la colonne «B», l'utilisateur indique le nombre de travaux accomplis en cette journée.
Dans les autres colonnes, il y a: - Des données entrées par l'utilisateurs au sujet du travail; - Des formules qui renvoies un résultat à l'utilisateur.
J'aimerais que chaque fois qu'il inscrit un nombre de travaux plus grand que «1», un nombre de rangées équivalent au nombre de travaux -1, s'insère automatiquement en dessous pour qu'il puisse entrer les données de chaque travail, avec la même date dans la colonne «A», et les mêmes formats de cellule et les mêmes formules que dans la rangée précédente.
Normalement, je travaille avec Access, mais ce client voudrait avoir ça en Excel, ce qui me complique beaucoup les choses, car je m'y connait peu en Excel.
Merci! MonOncle
mononcle_sylvain
Tu peux copier cette macro dans le module de la feuille concernée.
Quelle macro?
PS: Je tiens à préciser que je veux faire une insertion de rangée et non pas une simple copie. En effet, si l'utilisateur a déjà entré les données du jour 2, je ne veux pas que les calculs soient faussés lors de l'ajout d'une rangée pour le jour 1.
Tu peux copier cette macro dans le module de la feuille concernée.
Quelle macro?
PS: Je tiens à préciser que je veux faire une insertion de rangée et
non pas une simple copie. En effet, si l'utilisateur a déjà entré les
données du jour 2, je ne veux pas que les calculs soient faussés lors
de l'ajout d'une rangée pour le jour 1.
Tu peux copier cette macro dans le module de la feuille concernée.
Quelle macro?
PS: Je tiens à préciser que je veux faire une insertion de rangée et non pas une simple copie. En effet, si l'utilisateur a déjà entré les données du jour 2, je ne veux pas que les calculs soient faussés lors de l'ajout d'une rangée pour le jour 1.
popi
Salut MonOncle, je vois pas ce que tu lui reproche à la macro de Pierre ;-) çà devrait se rapprocher de çà :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then If Target > 1 Then Rows(Target.Row + 1 & ":" & Target.Row + (Target - 1)).Insert Shift:=xlDown Rows(Target.Row & ":" & Target.Row).SpecialCells(xlCellTypeFormulas, 23).Select For Each c In Selection c.Select Col = Mid([c].Address, 2, InStr(2, [c].Address, "$") - 2) coord = Col & c.Row & ":" & Col & c.Row + (Target - 1) Selection.AutoFill Destination:=Range(coord), Type:=xlFillDefault Next Range("A" & Target.Row).Select For i = 2 To Target ActiveCell(i, 1) = ActiveCell ActiveCell(i, 2) = "" Next End If End If End Sub
@+ popi
Salut MonOncle,
je vois pas ce que tu lui reproche à la macro de Pierre ;-)
çà devrait se rapprocher de çà :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target > 1 Then
Rows(Target.Row + 1 & ":" & Target.Row + (Target - 1)).Insert
Shift:=xlDown
Rows(Target.Row & ":" &
Target.Row).SpecialCells(xlCellTypeFormulas, 23).Select
For Each c In Selection
c.Select
Col = Mid([c].Address, 2, InStr(2, [c].Address, "$") - 2)
coord = Col & c.Row & ":" & Col & c.Row + (Target - 1)
Selection.AutoFill Destination:=Range(coord),
Type:=xlFillDefault
Next
Range("A" & Target.Row).Select
For i = 2 To Target
ActiveCell(i, 1) = ActiveCell
ActiveCell(i, 2) = ""
Next
End If
End If
End Sub
Salut MonOncle, je vois pas ce que tu lui reproche à la macro de Pierre ;-) çà devrait se rapprocher de çà :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then If Target > 1 Then Rows(Target.Row + 1 & ":" & Target.Row + (Target - 1)).Insert Shift:=xlDown Rows(Target.Row & ":" & Target.Row).SpecialCells(xlCellTypeFormulas, 23).Select For Each c In Selection c.Select Col = Mid([c].Address, 2, InStr(2, [c].Address, "$") - 2) coord = Col & c.Row & ":" & Col & c.Row + (Target - 1) Selection.AutoFill Destination:=Range(coord), Type:=xlFillDefault Next Range("A" & Target.Row).Select For i = 2 To Target ActiveCell(i, 1) = ActiveCell ActiveCell(i, 2) = "" Next End If End If End Sub
J'avais, par mégarde, choisi "encre sympathique" comme couleur de police... ;-) Plus sérieusement, j'ai fait copier, mais pas coller... :(
Comme tu as répondu à notre oncle, je ne la recrée pas... ( fainéant, va...)
Bon week-end
popi wrote:
Salut MonOncle, je vois pas ce que tu lui reproche à la macro de Pierre ;-) çà devrait se rapprocher de çà :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then If Target > 1 Then Rows(Target.Row + 1 & ":" & Target.Row + (Target - 1)).Insert Shift:=xlDown Rows(Target.Row & ":" & Target.Row).SpecialCells(xlCellTypeFormulas, 23).Select For Each c In Selection c.Select Col = Mid([c].Address, 2, InStr(2, [c].Address, "$") - 2) coord = Col & c.Row & ":" & Col & c.Row + (Target - 1) Selection.AutoFill Destination:=Range(coord), Type:=xlFillDefault Next Range("A" & Target.Row).Select For i = 2 To Target ActiveCell(i, 1) = ActiveCell ActiveCell(i, 2) = "" Next End If End If End Sub
@+ popi
Salut Popy
J'avais, par mégarde, choisi "encre sympathique" comme couleur de police...
;-)
Plus sérieusement, j'ai fait copier, mais pas coller... :(
Comme tu as répondu à notre oncle, je ne la recrée pas... ( fainéant, va...)
Bon week-end
popi wrote:
Salut MonOncle,
je vois pas ce que tu lui reproche à la macro de Pierre ;-)
çà devrait se rapprocher de çà :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target > 1 Then
Rows(Target.Row + 1 & ":" & Target.Row + (Target -
1)).Insert Shift:=xlDown
Rows(Target.Row & ":" &
Target.Row).SpecialCells(xlCellTypeFormulas, 23).Select
For Each c In Selection
c.Select
Col = Mid([c].Address, 2, InStr(2, [c].Address, "$")
- 2) coord = Col & c.Row & ":" & Col & c.Row +
(Target - 1) Selection.AutoFill
Destination:=Range(coord), Type:=xlFillDefault
Next
Range("A" & Target.Row).Select
For i = 2 To Target
ActiveCell(i, 1) = ActiveCell
ActiveCell(i, 2) = ""
Next
End If
End If
End Sub
J'avais, par mégarde, choisi "encre sympathique" comme couleur de police... ;-) Plus sérieusement, j'ai fait copier, mais pas coller... :(
Comme tu as répondu à notre oncle, je ne la recrée pas... ( fainéant, va...)
Bon week-end
popi wrote:
Salut MonOncle, je vois pas ce que tu lui reproche à la macro de Pierre ;-) çà devrait se rapprocher de çà :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then If Target > 1 Then Rows(Target.Row + 1 & ":" & Target.Row + (Target - 1)).Insert Shift:=xlDown Rows(Target.Row & ":" & Target.Row).SpecialCells(xlCellTypeFormulas, 23).Select For Each c In Selection c.Select Col = Mid([c].Address, 2, InStr(2, [c].Address, "$") - 2) coord = Col & c.Row & ":" & Col & c.Row + (Target - 1) Selection.AutoFill Destination:=Range(coord), Type:=xlFillDefault Next Range("A" & Target.Row).Select For i = 2 To Target ActiveCell(i, 1) = ActiveCell ActiveCell(i, 2) = "" Next End If End If End Sub
@+ popi
Pierre Fauconnier
Heu, elle est resté dans mon copier-coller. Comme Popi a répondu, je ne la recrée pas... Désolé pour cette erreur
Bon week-end
-- Pierre Fauconnier "C'est lorsqu'il y a un temps mort qu'il faut tuer le temps..." (Le Chat de Geluck (enfin, je crois...)) (remplacer NOSPAM par pfi pour me répondre. Merci)
--- MonOncle wrote:
Tu peux copier cette macro dans le module de la feuille concernée.
Quelle macro?
PS: Je tiens à préciser que je veux faire une insertion de rangée et non pas une simple copie. En effet, si l'utilisateur a déjà entré les données du jour 2, je ne veux pas que les calculs soient faussés lors de l'ajout d'une rangée pour le jour 1.
Heu, elle est resté dans mon copier-coller. Comme Popi a répondu, je ne la
recrée pas... Désolé pour cette erreur
Bon week-end
--
Pierre Fauconnier
"C'est lorsqu'il y a un temps mort qu'il faut tuer le temps..." (Le Chat de
Geluck (enfin, je crois...))
(remplacer NOSPAM par pfi pour me répondre. Merci)
---
MonOncle wrote:
Tu peux copier cette macro dans le module de la feuille concernée.
Quelle macro?
PS: Je tiens à préciser que je veux faire une insertion de rangée et
non pas une simple copie. En effet, si l'utilisateur a déjà entré les
données du jour 2, je ne veux pas que les calculs soient faussés lors
de l'ajout d'une rangée pour le jour 1.
Heu, elle est resté dans mon copier-coller. Comme Popi a répondu, je ne la recrée pas... Désolé pour cette erreur
Bon week-end
-- Pierre Fauconnier "C'est lorsqu'il y a un temps mort qu'il faut tuer le temps..." (Le Chat de Geluck (enfin, je crois...)) (remplacer NOSPAM par pfi pour me répondre. Merci)
--- MonOncle wrote:
Tu peux copier cette macro dans le module de la feuille concernée.
Quelle macro?
PS: Je tiens à préciser que je veux faire une insertion de rangée et non pas une simple copie. En effet, si l'utilisateur a déjà entré les données du jour 2, je ne veux pas que les calculs soient faussés lors de l'ajout d'une rangée pour le jour 1.
mononcle_sylvain
Merci à vous deux. J'ai travaillé un peu votre code pour l'adapter à mon application, mais ce départ m'a été d'un grand secours.
Encore merci!
MonOncle Montréal (Québec)
Merci à vous deux.
J'ai travaillé un peu votre code pour l'adapter à mon application,
mais ce départ m'a été d'un grand secours.