Je ne connais rien en VBA ou modules, si votre attention est attiré par mon message voici ce que je voudrais faire en matricielle
J ai 4 feuilles dénommée « P- T-O et generale »
Je saisie indifféremment sur une de mes feuilles « P-T ou O » 7 colonnes, sachant que la saisie de ces colonnes mettent à jour 20 colonnes qui ont chacune une formule
Et je voudrais recopier a chaque saisie sur l’une ou l’autre des 3 feuilles les 7 colonnes de la derniére ligne saisie
De la feuille saisie à la feuille générale
Exemple :
Feuille P
15-sept 2 1 11 9 13 P
17-sept 10 9 7 12 11 P
21-sept 7 10 11 13 12 P
Feuille T
13-sept 10 5 11 12 2 T
14-sept 6 13 3 12 10 T
16-sept 7 8 9 11 3 T
18-sept 2 4 9 13 14 T
19-sept 3 8 4 9 15 T
20-sept 6 7 8 10 12 T
22-sept 1 17 6 2 4 T
Feuille O
12-sept 3 11 5 2 1 O
Feuille generale
12-sept 3 11 5 2 1 O
13-sept 10 5 11 12 2 T
14-sept 6 13 3 12 10 T
15-sept 2 1 11 9 13 P
16-sept 7 8 9 11 3 T
17-sept 10 9 7 12 11 P
18-sept 2 4 9 13 14 T
19-sept 3 8 4 9 15 T
20-sept 6 7 8 10 12 T
21-sept 7 10 11 13 12 P
22-sept 1 17 6 2 4 T
Re : copie de ligne d'une feuille vers une autre feuille
re bonjour,
personne ne veut essayer de m'aider...j essaie de le faire seul depuis ce matin je ne trouve pas la fonction qui puisse définir
ce dont je voudrais faire
merci si quelqu'un veut m'accorder un moment de son temps pour résoudre mon probléme
Re : copie de ligne d'une feuille vers une autre feuille
Bonjour sev31130,
Par formule c'est sûrement possible mais bien compliqué.
En VBA c'est très facile avec cette macro dans le code de la feuille "generale" :
Code:
Private Sub Worksheet_Activate()
Dim a, i As Byte, h As Long
Application.ScreenUpdating = False
Rows("2:" & Rows.Count).Delete 'RAZ
a = Array("P", "T", "O")
For i = 0 To UBound(a)
h = Sheets(a(i)).Range("A" & Rows.Count).End(xlUp).Row
If h > 1 Then Sheets(a(i)).Rows("2:" & h).Copy _
Range("A" & Rows.Count).End(xlUp)(2)
Next
Me.UsedRange.Sort [A1], xlAscending, Header:=xlYes 'tri sur dates
End Sub
Re : copie de ligne d'une feuille vers une autre feuille
re ami JOB75
que de tracas je te donne
voila j'ai mis de l'ordre dans mes idées et je te présente le projet que je voudrais sur les deux fichiers que tu trouveras, en dehors de la modif que je te demande sur le fichier2 si le reste est trop long on laisse comme c est et ca iras très bien, disons que 'est pour un simple confort de saisie ce que je te demande et pour alleger les classuers enfin tu verras les explications en feuilles "commentaire" ouvrir le fichier2 en premier
cordialement
YC
je suis navré si mes explications sont mauvaises, j'espère que tu comprendras ce que j'ai ecris sur la page commentaires si tu peux me faire ce changement que je te demande ensuite nous n'irons pas plus loin
Re : copie de ligne d'une feuille vers une autre feuille
Bonjour sev31130,
Teste le fichier joint avec la macro modifiée dans ThisWorkbook :
Code:
Sub Copie(F As Worksheet, Sh As Worksheet)
If Not Sh.Name Like F.Name & "?" Then Exit Sub
Dim lettre As String, lig As Long
lettre = Right(Sh.Name, 1)
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'à cause des liaisons...
Application.Calculation = xlCalculationManual 'calcul sur ordre
F.Cells.Copy Sh.[A1] 'pour les formats
Sh.[F4:R4] = Sh.[T1:AF1].Offset(Application.Match(lettre, Sh.[AG2:AG4], 0)).Value
lig = Sh.UsedRange.Row + Sh.UsedRange.Rows.Count - 1
If lig > 4 Then 'début en ligne 5
With Sh.Range(Sh.Cells(5, 5), Sh.Cells(lig, 5))
Me.Names.Add "matrice", .Value 'nom défini par une matrice
.FormulaArray = "=LN(matrice=""" & lettre & """)"
.Value = .Value
.EntireRow.Sort .Cells(1), Header:=xlNo 'tri pour accélérer la suppression
On Error Resume Next
.SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
.Value = lettre
Me.Names("matrice").Delete
End With
End If
Application.Calculation = xlCalculationAutomatic 'calcul automatique
Sh.UsedRange.Value = Sh.UsedRange.Value 'supprime les formules
End Sub
Maintenant les formules sont supprimées seulement à la fin : les résultats sont donc les mêmes qu'on les supprime ou qu'on les conserve.
Le calcul sur ordre évite le recalcul des formules du classeur pendant le filtrage et le tri.
Re : copie de ligne d'une feuille vers une autre feuille
bonjour
Après essai rapide, je pense que ta formule est bonne,et fonctionne, mais s'il te plait soit tu libère les colonnes a partir de la colonne AH soit tu libère les 4 premières lignes de la copie intégrale des feuilles pour laisser de la place
pour d'autres renseignements que j'ai besoin comme la plage que j ai sur la feuille ecart PP plage AH1- AS4
Il est vrai que je me dois d te donner une explication.
En préambule je fais partie des gens qui croient en la loi des chiffres et des séries, d'autre part tout record ou statistique est fait pour être battu pour les uns et "cassé" pour les autres.
Le but du jeu de tous ces calculs est de savoir quand un Numéro atteint ou dépasse des valeurs annuelles et encore plus sur le temps (environ 20 ans)
donc comme tu peux le voir sur la feuille PP la plage AH1:AS4 il y a des chiffres
la ligne 2 représente les valeurs maxi depuis environ 20 ans
la ligne 3 représente les valeurs sur l'année
la ligne 4 reprends la plus grande valeur de la ligne 2 ou de la ligne 3
que je compare avec la dernière ligne des colonnes F à R de la feuille PP
alors tu vas me dire pourquoi ne pas faire une ligne 5 qui se copierais en dessous
OUI mais je n'avais prévu et comme la LIGNE 5 c'est la ligne qui est dans toutes tes formules
donc on vas pas tout changer j ai une vue d ensemble en figeant les volets
Malheureusement j'ai copié la ligne , alors ca ne copie pas ,mais je ne peux toujours pas écrire sur la fameuse plage, si j'écris quand je reviens c'est éffacé.. attention aussi si on mets cette ligne , la feuille P se copie dans les feuilles P T et O donc la derniere lignhe se copie dans les 3 feuilles sans tenir compte de son origine P - T ou O
Tu te souviens tu avais figé la plage T1:AF4 fais pareil avec l autre plage AH1:AS4 et tu te casse plus la tete
copie de la formule qui est sur mon "thiiswokbook"
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Copie Sheets("ecart P"), Sh
Copie Sheets("ecart G"), Sh
End Sub
Sub Copie(F As Worksheet, Sh As Worksheet)
If Not Sh.Name Like F.Name & "?" Then Exit Sub
Dim lettre As String, lig As Long
lettre = Right(Sh.Name, 1)
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'à cause des liaisons...
Application.Calculation = xlCalculationManual 'calcul sur ordre
F.Cells.Copy Sh.[A1] 'pour les formats
Sh.[F4:R4] = Sh.[T1:AF1].Offset(Application.Match(lettre, Sh.[AG2:AG4], 0)).Value
lig = Sh.UsedRange.Row + Sh.UsedRange.Rows.Count - 1
If lig > 4 Then 'début en ligne 5
With Sh.Range(Sh.Cells(5, 5), Sh.Cells(lig, 5))
Me.Names.Add "matrice", .Value 'nom défini par une matrice
.FormulaArray = "=LN(matrice=""" & lettre & """)"
.Value = .Value
.EntireRow.Sort .Cells(1), Header:=xlNo 'tri pour accélérer la suppression
On Error Resume Next
.SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
.Value = lettre
Me.Names("matrice").Delete
Application.Calculation = xlCalculationAutomatic 'calcul automatique
Sh.UsedRange.Value = Sh.UsedRange.Value 'supprime les formules
F.Cells.Copy Sh.[A1] 'pour les formats
Sh.Range("AH1", Sh.Columns(Sh.Columns.Count)).Delete
End Sub
End With
Est ce que je peux me permettre de t'envoyer mon fichier comme je l'ai conçus dans ses nouvelles normes en t'expliquant clairement ce qui serait pour moi l'idéal, si toutefois c'est faisable...et si TU ARRIVES à faire ce que je te demande tu peux le FIGER je ne demanderais PLUS RIEN
Amicalement
Cordialement
CY
(PS je pars demain de Toulouse pour Avignon et je ne suis pas de retour avant lundi fin de matinée )
si tu peux voir pour libérer les plages c'est bien sinon on attendras Lundi
TU ES SUPER GENTIL MERCI
comme tu as marqué "A+" je ne peux te quitter comme cela (rires)
je te joins un fichier qui est l'aboutissement d'une mauvaise analyse ou l'on se dit au départ "je vais demander que l'on m'aide pour faire ci ou la" et puis on se rend compte que si l'on fais cela on as plus etc....
enfin tout ceci pour te dire que la j'ai atteins TOUT ce qui est permis d'avoir comme statistiques et écarts
mais tu liras mon commentaire et tu verras ce que tu en pense
Confirmation de cration
Amicalement
Yves
(on pourrait le mettre sur le site si des fois des amateurs de courses hippiques et plus particulererement des personnes comme moi qui aimes stats surtout et RIEN QUE DANS LA COURSE DU QUINTE NATIONAL , que cela profite)
Re : copie de ligne d'une feuille vers une autre feuille
bonsoir
toi qui passes et qui lis ces messages, sache que le gars qui a bien voulu m'accorder beaucoup de temps afin d'avoir
un classeur complet, avec une grande connaissance, une grande gentillesse, et qui a su me faire apprendre la valeur de son travail, toi qui liras le fichier dis toi bien qu'une grande partie de ce fichier a été faites par JOB75
(pour les formules et les macros)
Je dis MERCI MONSIEUR JOB je comprends ta lassitude, je m'en excuses, je comprends ton RAS LE BOL j'en suis la cause....et même si tu abandonnes comme tu le dis...tu m'as beaucoup donné
JE TE DIS MILLE FOIS MERCI POUR TOUT CE QUE TU AS FAIS POUR MOI