Quelle fonction?
didijo44
-
Vaucluse Messages postés 27336 Date d'inscription Statut Contributeur Dernière intervention -
Vaucluse Messages postés 27336 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis actuellement à la recherche d'une formule pour résoudre mon probleme.
Je dispose d'une base de donnée comportant 15 "entete" ac par exemple: Mois / Date / Destinataire.
Les valeurs que peuvent prendre destinataire sont: 1, 2, 3 et 4.
Je souhaite faire apparaitre sur 4 nouvelles feuilles et pour chaques destinataires les différents mois et dates correspondants, automatiquement.
Comment puis-je faire? Merci de votre aide.
je suis actuellement à la recherche d'une formule pour résoudre mon probleme.
Je dispose d'une base de donnée comportant 15 "entete" ac par exemple: Mois / Date / Destinataire.
Les valeurs que peuvent prendre destinataire sont: 1, 2, 3 et 4.
Je souhaite faire apparaitre sur 4 nouvelles feuilles et pour chaques destinataires les différents mois et dates correspondants, automatiquement.
Comment puis-je faire? Merci de votre aide.
A voir également:
- Quelle fonction?
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
7 réponses
Bonjour,
je ne pense pas que ça soit faisable via une fonction, mais par du code VBA. Si cela t'interesse dit le moi je t'en dirait plus ;)
@+++
je ne pense pas que ça soit faisable via une fonction, mais par du code VBA. Si cela t'interesse dit le moi je t'en dirait plus ;)
@+++
En effet cela pourrait m'intéresser, parce que le copier coller avec les filtres commence à me gaver!!!
Merci de ton aide
Merci de ton aide
Tu connais un peu le développement? Sais tu comment on fait une macro dans excel? Quelle est ta version d'excel?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
D'abord fait une copie de ton fichier puis travail sur cette copie.
Alors voila un petit lien dans le site pour accéder aux pages de code :
https://www.commentcamarche.net/faq/8130-mise-a-jour-d-une-procedure-ou-d-une-fonction-en-vba
dans l'arborescence chois "this workbook"
dans la fenêtre qui s'ouvre, en haut, dans la 1er liste déroulante choisi "workbook"
le code suivant apparait :
entre ces lignes, copie le code ci-dessous puis initialise les 2 variables signalées par les commentaires et sauvegarde.
Puis ferme tout et ré ouvre le classeur (la copie hein ;) )
Normalement le tri est fait :)
@++++
Alors voila un petit lien dans le site pour accéder aux pages de code :
https://www.commentcamarche.net/faq/8130-mise-a-jour-d-une-procedure-ou-d-une-fonction-en-vba
dans l'arborescence chois "this workbook"
dans la fenêtre qui s'ouvre, en haut, dans la 1er liste déroulante choisi "workbook"
le code suivant apparait :
Private Sub Workbook_Open()
End Sub
entre ces lignes, copie le code ci-dessous puis initialise les 2 variables signalées par les commentaires et sauvegarde.
Dim i As Integer
Dim j As Integer
Dim y As String
Dim listedestinataires() As String
Dim trouvedestinataires() As String
Dim nbdest As Integer
Dim VarTab As Variant
nbdest = 1
j = 1
'initialiser ici la lettre de la colonne qui contient l'entête destinataire
y = "A"
i = 1
Do While Feuil1.Cells(i, y).Value <> ""
trouvedestinataires = Filter(listedestinataires, "Destinataire " & (Feuil1.Cells(i, y).Value), True)
On Error Resume Next
VarTab = UBound(trouvedestinataires)
On Error GoTo 0
If VarTab < 0 Or i = 1 Then
Sheets.Add.Move After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Destinataire " & (Feuil1.Cells(i, y).Value)
nbdest = nbdest + 1
ReDim Preserve listedestinataires(nbdest)
listedestinataires(nbdest) = "Destinataire " & (Feuil1.Cells(i, y).Value)
ActiveSheet.Cells("1", "A").Select
Else
Sheets("Destinataire " & (Feuil1.Cells(i, y).Value)).Activate
j = 1
Do While Sheets("Destinataire " & (Feuil1.Cells(i, y).Value)).Cells(j, y).Value <> ""
j = j + 1
Loop
Sheets("Destinataire " & (Feuil1.Cells(i, y).Value)).Cells(j, "A").Select
End If
Feuil1.Cells(i, y).EntireRow.Copy
Sheets("Destinataire " & (Feuil1.Cells(i, y).Value)).Paste
i = i + 1
Loop
'on parcours les lignes
' si c 'est la première fois qu'on voit le code destinataire
' on crée une nouvelle feuille
' on se place dessus à la première ligne
' si le code destinataire a déjà été croisé
' on se place sur la feuille correspondante
' et sur la dernière ligne +1
' On copie la ligne de la feuille 1 sur la feuille en cours
End Sub
Puis ferme tout et ré ouvre le classeur (la copie hein ;) )
Normalement le tri est fait :)
@++++
Bonjour
Au modéle ci joint, une solution sans macro qui peut être, résoudra d'une autre façon votre problème.
http://www.cijoint.fr/cjlink.php?file=cj201002/cijezbO2EX.xls
Revenez si besoin d'explication
Crdlmnt
Au modéle ci joint, une solution sans macro qui peut être, résoudra d'une autre façon votre problème.
http://www.cijoint.fr/cjlink.php?file=cj201002/cijezbO2EX.xls
Revenez si besoin d'explication
Crdlmnt
Bonjour mon ami Raymond
pas difficile, tu fais un esai en scindant les formules:
INDEX(CHAMP;3;2)
te renvoi la valeur du champ sur la 3° ligne de la 2° colonne du champ
si tu remplace le N° de ligne par EQUIV:
EQUIV(CELL;Colonne;0)
te renvoi le N° de ligne dans le champ ou se trouve la valeur cherchée(CELL).
Le;0) est le même principe que pour RECHERCHE
ensuite, pour éviter de rectifier les cellules en "ajustant" les références de colonnes cherchées, il suffit d'utiliser LIGNE() et COLONNE() , corrigés de + ou - pour renvoyer la bonne position dans le champ de recherche.
Bon soleil. Au plaisir
pas difficile, tu fais un esai en scindant les formules:
INDEX(CHAMP;3;2)
te renvoi la valeur du champ sur la 3° ligne de la 2° colonne du champ
si tu remplace le N° de ligne par EQUIV:
EQUIV(CELL;Colonne;0)
te renvoi le N° de ligne dans le champ ou se trouve la valeur cherchée(CELL).
Le;0) est le même principe que pour RECHERCHE
ensuite, pour éviter de rectifier les cellules en "ajustant" les références de colonnes cherchées, il suffit d'utiliser LIGNE() et COLONNE() , corrigés de + ou - pour renvoyer la bonne position dans le champ de recherche.
Bon soleil. Au plaisir