copie avec index et recherche

VINCEGR

XLDnaute Occasionnel
bonjour le forum, :)
je vous joins un fichier avec mon souci.
je souhaite utiliser les fonctions index et recherche mais je n'y arrive pas j'ai toujours message d'erreur. :confused:

merci pour votre aide.

bonne journée
@+
VinceGR
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : copie avec index et recherche

bonjour mromain,
je viens de retester votre fonction et est-il possible de l'adapter pour masquer les lignes vides des jours.
merci d'avance

Bonjour VINCEGR,

Pas utilisable tel quel non... Il faudrait modifier le code et en faire une macro - pas de fonctions saisies dans les cellules, mais une macro qui fait le traitement et inscrit le résultat dans les cellules.

Maintenant, pour faire une telle chose, il faut toutes les informations nécessaires à la compréhension du problème (cf. on apprend qu'au post #14 qu'il faut renvoyer non pas un mais deux fournisseurs).
Tu devrai expliquer un petit peu mieux ce que tu attends...

Sinon, une remarque plutôt personnelle sur ton fichier : éviter les cellules fusionnées !

En attendant de plus amples explications...
a+
 

VINCEGR

XLDnaute Occasionnel
Re : copie avec index et recherche

RE mromain,

effectivement j'aurais du expliquer mieux mon souhait. pour plus d'explication:
1) j'ai un tableau ou sont regroupés le planning général comme déja mentionné sur post départ
2) je répartis ce planning sur différentes feuilles pour le faire parvenir aux différents fournisseurs concernés
3) il y a un fournisseur à qui je fourni aussi le planning d'un autre fournisseur avec.

en espérant avoir apporté les infos nécessaires.
@+
 

mromain

XLDnaute Barbatruc
Re : copie avec index et recherche

RE mromain,

effectivement j'aurais du expliquer mieux mon souhait. pour plus d'explication:
1) j'ai un tableau ou sont regroupés le planning général comme déja mentionné sur post départ
2) je répartis ce planning sur différentes feuilles pour le faire parvenir aux différents fournisseurs concernés
3) il y a un fournisseur à qui je fourni aussi le planning d'un autre fournisseur avec.

en espérant avoir apporté les infos nécessaires.
@+

Re bonjour,

Juste pour info...
As-tu jeté un œil sur le lien de mon précédent post ?

Si tu l'as vu, ne pourrais-tu pas modifier ton fichier afin d'enlever les cellules fusionnées - que ça ressemble à une "BDD".Car les cellules fusionnées sont assez lourdes/chiantes à traiter (que ce soit en formule, ou en macro).

En général, il vaut mieux séparer le "stockage" et la "visualisation" de l'information.
En l'occurrence, sur ton fichier, il faudrait une ligne par évènement (ne pas mettre le détail sur plusieurs lignes) - l'affichage, on verra plus tard...
Rque: Cela te permettrai en plus, d'avoir dans ta "BDD" des données sur plus d'une semaine (pour pouvoir les exploiter, faire des indicateurs, ...).

Qu'en penses-tu ?

a+
 

VINCEGR

XLDnaute Occasionnel
Re : copie avec index et recherche

RE,

Re bonjour,

Juste pour info...
As-tu jeté un œil sur le lien de mon précédent post ?

Si tu l'as vu, ne pourrais-tu pas modifier ton fichier afin d'enlever les cellules fusionnées - que ça ressemble à une "BDD".Car les cellules fusionnées sont assez lourdes/chiantes à traiter (que ce soit en formule, ou en macro).

En général, il vaut mieux séparer le "stockage" et la "visualisation" de l'information.
En l'occurrence, sur ton fichier, il faudrait une ligne par évènement (ne pas mettre le détail sur plusieurs lignes) - l'affichage, on verra plus tard...
Rque: Cela te permettrai en plus, d'avoir dans ta "BDD" des données sur plus d'une semaine (pour pouvoir les exploiter, faire des indicateurs, ...).

Qu'en penses-tu ?

a+

je suis tout a fait d'accord avec toi aussi j'ai modifié fichier de base en pièce jointe.
merci d'avance
@+
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : copie avec index et recherche

Re,

Je pensais plus à un truc de ce genre... (qui serait plus facilement exploitable)
Qu'en dis-tu ?

a+
 

Pièces jointes

  • Classeur1.zip
    5.1 KB · Affichages: 19
  • Classeur1.zip
    5.1 KB · Affichages: 29
  • Classeur1.zip
    5.1 KB · Affichages: 27

mromain

XLDnaute Barbatruc
Re : copie avec index et recherche

Bonjour VINVEGR,

Voici une essai avec une macro au niveau du Workbook.
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim zoneFournisseurs As Range, nomFourn() As String, iFourn As Long, searchC As Range, memAdr As String, iL As Long
    
    'ne pas traiter les onglets GENERAL et Liste
    If Sh.Name = "GENERAL" Or Sh.Name = "Listes" Then Exit Sub
    
    'récupérer le nom de l'onglet composé de noms de fournisseurs (1 ou plusieurs
    ' séparés par un tiret "-") dans un tableau
    nomFourn = Split(Sh.Name, "-")
    
    'effacer les données
    Sh.Range("2 : " & Sh.Rows.Count).Clear
    iL = 1
    
    'récupérer la "zone fournisseur" de l'onglet général (colonne C)
    With ThisWorkbook.Sheets("GENERAL")
        Set zoneFournisseurs = .Range("C1", .Range("C" & .Rows.Count).End(xlUp))
    End With
    
    'boucler sur chaque fournisseur (nom de l'onglet)
    For iFourn = LBound(nomFourn) To UBound(nomFourn)
        'rechercher dans la zoneFournisseurs
        Set searchC = zoneFournisseurs.Find(nomFourn(iFourn), , xlValues, xlWhole)
        'si une cellule est trouvée
        If Not searchC Is Nothing Then
            memAdr = searchC.Address
            Do
                iL = iL + 1
                searchC.EntireRow.Copy Sh.Range("A" & iL)
                Set searchC = zoneFournisseurs.FindNext(searchC)
            Loop Until memAdr = searchC.Address
        End If
    Next iFourn
End Sub
A chaque fois qu'on active une feuille (si ce n'est pas l'onglet GENERAL ou l'onglet Listes) la macro efface toutes les lignes et récupère les infos du(des) fournisseur(s) en question.

a+
 

Pièces jointes

  • Classeur1.zip
    13 KB · Affichages: 20
  • Classeur1.zip
    13 KB · Affichages: 18
  • Classeur1.zip
    13 KB · Affichages: 21
Dernière édition:

VINCEGR

XLDnaute Occasionnel
Re : copie avec index et recherche

bonjour mromain,

c'est "monstrueux" comme solution et ca donne une solution clair au tableau.
est-il possible de rajouter un classement automatique par jours lorsque nous avons 2 fournisseurs concernés et sur l'exemple d'un planning de semaine si une journée aucune intervention ou si férié l'indiqué.
merci encore pour ton aide
@+
 

VINCEGR

XLDnaute Occasionnel
Re : copie avec index et recherche

bonjour mromain et le forum,
je reviens vers vous pour le code vba que j'ai adapté avec succès pour une nouvelle application sauf que j'ai rajouté une liste avec une ligne total et lors de la création des onglets j'ai un bog

"impossible de modifier le contenu de totaux de liste"

comment le solutionner?

merci pour votre aide
@+
 

mromain

XLDnaute Barbatruc
Re : copie avec index et recherche

Bonjour VINCEGR,

Désolé pour l'attente...


est-il possible de rajouter un classement automatique par jours lorsque nous avons 2 fournisseurs concernés
Pour ce, modifie le code comme ça :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim zoneFournisseurs As Range, nomFourn() As String, iFourn As Long, searchC As Range, memAdr As String, iL As Long
    
    'ne pas traiter les onglets GENERAL et Liste
    If Sh.Name = "GENERAL" Or Sh.Name = "Listes" Then Exit Sub
    
    'récupérer le nom de l'onglet composé de noms de fournisseurs (1 ou plusieurs
    ' séparés par un tiret "-") dans un tableau
    nomFourn = Split(Sh.Name, "-")
    
    'effacer les données
    Sh.Range("2 : " & Sh.Rows.Count).Clear
    iL = 1
    
    'récupérer la "zone fournisseur" de l'onglet général (colonne C)
    With ThisWorkbook.Sheets("GENERAL")
        Set zoneFournisseurs = .Range("C1", .Range("C" & .Rows.Count).End(xlUp))
    End With
    
    'boucler sur chaque fournisseur (nom de l'onglet)
    For iFourn = LBound(nomFourn) To UBound(nomFourn)
        'rechercher dans la zoneFournisseurs
        Set searchC = zoneFournisseurs.Find(nomFourn(iFourn), , xlValues, xlWhole)
        'si une cellule est trouvée
        If Not searchC Is Nothing Then
            memAdr = searchC.Address
            Do
                iL = iL + 1
                searchC.EntireRow.Copy Sh.Range("A" & iL)
                Set searchC = zoneFournisseurs.FindNext(searchC)
            Loop Until memAdr = searchC.Address
        End If
    Next iFourn
    
    'trier les données par date
    Sh.Range("A2:E" & iL).Sort Sh.Range("A2"), xlAscending
End Sub
si une journée aucune intervention ou si férié l'indiqué.
Ça, c'est plus compliqué à faire...

Sinon, pour la ligne de total, tu pourrai la mettre sous la ligne de titre et figer les volets à partir de la ligne 3. Cela te permettrai d'avoir la somme qui se met à jour à chaque ajout de données et de l'avoir toujours visible.

a+
 
Dernière édition:

VINCEGR

XLDnaute Occasionnel
Re : copie avec index et recherche

bonjour mromain,
merci pour réponse j'ai essayé d'adapter ligne total sous la ligne de titre mais lors de la création d'un nouvel onglet ne reprend pas la ligne total.
j'ai créé une liste dans l'onglet "Général" et quand je copie cet onglet pour le renommer avec le nom du "fourn" tout se retrouve déplacer !!!
est -il possible de lier un n° tel avec un nom d'onglet et quand j'imprime ma feuille
comme suivant model joint 'sauf qu'il me met le nom de l'onglet au milieu de la feuille ???
merci d'avance
@+
 

Pièces jointes

  • testcopiefeuillVBA 20 07 10.zip
    17.4 KB · Affichages: 10

mromain

XLDnaute Barbatruc
Re : copie avec index et recherche

Re bonjour,

J'ai modifié le code pour prendre en compte le fait qu'il y ait 2 "lignes de tires". J'ai également rajouté une feuille à ne pas traiter. Cette feuille nommée Modele, est destinée à servir de "modèle fournisseur".
Modifie le code de ton fichier avec celui-ci ; rajoute une feuille (nommée Modele) et crée dessus la "mise en page" des onglets fournisseurs que tu souhaite avoir.
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim zoneFournisseurs As Range, nomFourn() As String, iFourn As Long, searchC As Range, memAdr As String, iL As Long
    
    'ne pas traiter les onglets GENERAL et Liste
    If Sh.Name = "GENERAL" Or Sh.Name = "Listes" Or Sh.Name = "Modele" Then Exit Sub
    
    'récupérer le nom de l'onglet composé de noms de fournisseurs (1 ou plusieurs
    ' séparés par un tiret "-") dans un tableau
    nomFourn = Split(Sh.Name, "-")
    
    'effacer les données
    Sh.Range("3 : " & Sh.Rows.Count).Clear
    iL = 2
    
    'récupérer la "zone fournisseur" de l'onglet général (colonne C)
    With ThisWorkbook.Sheets("GENERAL")
        Set zoneFournisseurs = .Range("C1", .Range("C" & .Rows.Count).End(xlUp))
    End With
    
    'boucler sur chaque fournisseur (nom de l'onglet)
    For iFourn = LBound(nomFourn) To UBound(nomFourn)
        'rechercher dans la zoneFournisseurs
        Set searchC = zoneFournisseurs.Find(nomFourn(iFourn), , xlValues, xlWhole)
        'si une cellule est trouvée
        If Not searchC Is Nothing Then
            memAdr = searchC.Address
            Do
                iL = iL + 1
                searchC.EntireRow.Copy Sh.Range("A" & iL)
                Set searchC = zoneFournisseurs.FindNext(searchC)
            Loop Until memAdr = searchC.Address
        End If
    Next iFourn
    
    'trier les données par date
    Sh.Range("A2:E" & iL).Sort Sh.Range("A2"), xlAscending
End Sub
De plus, il faut que tu sois plus explicite... Tu as la même formule partout (et elle renvoie 0 partout) du coup, je n'arrive pas à comprendre le résultat que tu attends (est-ce qu'il faut renvoyer le nombre de lignes concernant le-les fournisseur-s de l'onglet partout ?).
est -il possible de lier un n° tel avec un nom d'onglet et quand j'imprime ma feuille
comme suivant model joint 'sauf qu'il me met le nom de l'onglet au milieu de la feuille ???
Une fois de plus, je ne comprends pas grand choses...

Fait ces modifs, prépare un bel onglet modèle et renvoie le fichier.

a+
 
Dernière édition:

VINCEGR

XLDnaute Occasionnel
Re : copie avec index et recherche

bonjour mromain,

je joins un fichier avec les dernière modif,
le résultat obtenu est déjà très bien et je te remercie pour ton aide précieuse
j'espère que mes demandes seront possibles
@+
 

Pièces jointes

  • testcopiefeuillVBA 22 07 10.zip
    17.8 KB · Affichages: 13

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 902
Membres
103 982
dernier inscrit
krakencolas