Insertion auto de ligne en gardant la formule
Résolu
estes
-
estes -
estes -
Bonjour,
Bonjour,
Je me permets de faire appel à votre aide, pour un petit travail sur escel.
J'ai un tableau que je remplis, avec principalement les données suivantes: pays date de début date de fin, délais.
Plusieurs problèmes se posent à moi:
-quand j'insère une ligne grâce à une macro, je voudrais que la nouvelle ligne contienne toujours la fonction qui y étais auparavant. il s'agit d'une fonction un peu complexe
-je voudrais que ma liste des pays soit extraite vers une nouvelle feuille en ne conservant que les valeurs uniques. je voudrais également que soit comptabilisé le nombre de fois ou une même valeur revient.
-enfin, et c'est ce qui me pose le plus de problème je voudrais une fonction qui agisse de la façon suivante:
pour la valeur egypte, chercher toutes les valeurs egypte dans telle colonne et à chaque fois qu'elle est trouvée, prendre en compte la valeur "délais", et ce afin de trouver un délai moyen
Dans la mesure du possible je ne veux pas de filtre et préférerai des macros.
Voici mon programme
http://cjoint.com/data/ditKqBKBPn.htm
merci par avance de toute aide, je suis désolé de poser des questions qui doivent sans doute apparaitre evidente à la plupart d'entre vous..
Bonjour,
Je me permets de faire appel à votre aide, pour un petit travail sur escel.
J'ai un tableau que je remplis, avec principalement les données suivantes: pays date de début date de fin, délais.
Plusieurs problèmes se posent à moi:
-quand j'insère une ligne grâce à une macro, je voudrais que la nouvelle ligne contienne toujours la fonction qui y étais auparavant. il s'agit d'une fonction un peu complexe
-je voudrais que ma liste des pays soit extraite vers une nouvelle feuille en ne conservant que les valeurs uniques. je voudrais également que soit comptabilisé le nombre de fois ou une même valeur revient.
-enfin, et c'est ce qui me pose le plus de problème je voudrais une fonction qui agisse de la façon suivante:
pour la valeur egypte, chercher toutes les valeurs egypte dans telle colonne et à chaque fois qu'elle est trouvée, prendre en compte la valeur "délais", et ce afin de trouver un délai moyen
Dans la mesure du possible je ne veux pas de filtre et préférerai des macros.
Voici mon programme
http://cjoint.com/data/ditKqBKBPn.htm
merci par avance de toute aide, je suis désolé de poser des questions qui doivent sans doute apparaitre evidente à la plupart d'entre vous..
A voir également:
- Insertion auto de ligne en gardant la formule
- Partage de photos en ligne - Guide
- Formule si et - Guide
- Formule somme excel ligne - Guide
- Retour à la ligne excel formule - Guide
- Mètre en ligne - Guide
11 réponses
Bonjour,
Juste au passage pour insérer la nouvelle ligne, essayer cette procédure :
Juste au passage pour insérer la nouvelle ligne, essayer cette procédure :
Sub InsererLigneEtFonction() Rows("10:10").Copy Rows("8:8").PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Rows("8:9").Insert Shift:=xlDown Application.CutCopyMode = False Range("B10:L10").ClearContents Range("A1").Select End Sub
Bonjour,
Concernant ceci :
pour la valeur egypte, chercher toutes les valeurs egypte dans telle colonne et à chaque fois qu'elle est trouvée, prendre en compte la valeur "délais", et ce afin de trouver un délai moyen
La fonction SI() devrait faire l’affaire comme suit :
Dans cellule [Q10] : =SI(F10="EGYPTE";K10-C10;"")
et tirer vers le bas selon le nombre des lignes.
Concernant ceci :
pour la valeur egypte, chercher toutes les valeurs egypte dans telle colonne et à chaque fois qu'elle est trouvée, prendre en compte la valeur "délais", et ce afin de trouver un délai moyen
La fonction SI() devrait faire l’affaire comme suit :
Dans cellule [Q10] : =SI(F10="EGYPTE";K10-C10;"")
et tirer vers le bas selon le nombre des lignes.
voici l ligne de code qu j'ai faite pour extraire mes données d'une feuille vers l'utre sans doublon.
Ca ne fonctionne pas...
A l'aide!
Sub Test()
Application.ScreenUpdating = False
With Sheets("Sheet2")
.Cells.ClearContents
.Range("A1") = "All"
For Each X In Sheets("Sheet1").Range("F10:" & Sheets("Sheet1").Range("IV2").End(xlToLeft).Address)
Sheets("Sheet1").Range(X, Sheets("Sheet1").Cells(65536, X.Column).End(xlUp)).Copy
Sheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Next
.Select
.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("B1"), Unique:=True
.Columns(1).Delete
.Range("A1").Select
End With
Application.ScreenUpdating = True
End Sub
Ca ne fonctionne pas...
A l'aide!
Sub Test()
Application.ScreenUpdating = False
With Sheets("Sheet2")
.Cells.ClearContents
.Range("A1") = "All"
For Each X In Sheets("Sheet1").Range("F10:" & Sheets("Sheet1").Range("IV2").End(xlToLeft).Address)
Sheets("Sheet1").Range(X, Sheets("Sheet1").Cells(65536, X.Column).End(xlUp)).Copy
Sheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Next
.Select
.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("B1"), Unique:=True
.Columns(1).Delete
.Range("A1").Select
End With
Application.ScreenUpdating = True
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'avais pensé à la fonction SI mais je voudrais plutot passer par une macro, qui me ferais le calcul pour l'ensemble des valeurs et non pas une fonction qui ferait du case par case.
les données à extraire sont une liste de pays, qui commencent en F10.
je veux les extraires vers une autre page sans doublon.
le message d'erreur parle d'automation.
je veux les extraires vers une autre page sans doublon.
le message d'erreur parle d'automation.
Bonjour,
Essayer cette procédure (à insérer dans le module):
Salutations.
Jean-Pierre
Essayer cette procédure (à insérer dans le module):
Sub ExtraitSansDoublonTrier() Dim NL As Long Sheets("Sheet2").Activate Cells.ClearContents NL = Sheets("Sheet1").Cells(Columns(1).Cells.Count, 1).End(xlUp).Row Sheets("Sheet1").Range("F5:F" & NL).AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Range("A1"), Unique:=True Columns("A:A").Sort Key1:=Columns(1), Order1:=xlAscending, Header:=xlYes Range("aa1").Select End Sub--
Salutations.
Jean-Pierre