Rechercher sur plusieures feuilles

br44

XLDnaute Impliqué
Bonjour le forum ,



Voilà les sousis reviennent suite à de nouvelles infos on me demande de rajouter une fonction sur dans mon program et la je cale !

Oui on me demande de rajouter la possiblitée de rappeler les fiches clients dèja enregistrées pour les complèter . Mon problème c'est quelle se divises sur quatres feuilles différantes .

Ses quatres feuilles se divisent comme cela:
1-de la Ref Client "C001"à"C053"
2-de la Ref Client "C0055" à "C088"
3-de la Ref Client "C089" à "C111"
4 Et les Ref client ("C018","C040"),("C034,"C103"),("C038,"C051"et"C098") qui font l'objet d'un groupage .

je voudrais savoir si il est possible de faire une macro qui permetrait de faire les opèrations suivantes :

1-faire une recherche sur les quatres feuilles par la RefClient pour retouver la fiche?
2- Selectionner la plage allant de B":G" (à complèter par les numèros de lignes où la fiche est placée Ex: si la fiche rechercher est place dans la feuille7 entre la 100 ème et la 129 ligne la plage sera B101:G127 )
3- Copier la plage et la coller dans la plage B5:G27 de la feuille 1
4 Une fois cette plage completée la selectionner est la copier et la coller dans la plage de dèpart (Si on prend l'exemple précédent on colle en B101:G127 en feuille 7 .
5- On efface la zone B5:G29 de la première feuille pour revenir au dèpart .

Toute ces opèration se ferais par l'intermediaire d'un ComandButon nommé "MODIFIER" .


Ci_joint je mets un dossier contentant une aproche shèmatiques des opèrations citèe ci-dessus .

En espèrant que mes explications soient suffisament claire je vous dis merçi d'avence et à bientôt sur se fil .
BR44

3
 

br44

XLDnaute Impliqué
Re : Rechercher sur plusieures feuilles

Re: bonjour le forum ,Skoobi

Comme prèvue par mon dernier message je vous joint un nouveaux dossier composé deux deux classeurs le premier apellé client pour la liaison le deuxième nome F.xls dans le quel se treouve le program et les informations demandées .

En espèrant que vous trouverez plus claire que le prècèdent .

Vous remerciant par avances je vous dit à plus et me tient à votre disposition pour toutes questions que vous vous posez .
Br44
 

Pièces jointes

  • Dossier1.zip
    29.8 KB · Affichages: 59

skoobi

XLDnaute Barbatruc
Re : Rechercher sur plusieures feuilles

Bonsoir br44,

désolé pour le retard.

voici le code pour le bouton "MODIFIER LES FICHES":

Code:
Private Sub CommandButton12_Click() 'Boutton"MODIFIER LES FICHES
[B][COLOR="Blue"]Dim trouverefc As Range[/COLOR][/B]
If RefClient = "" Then
    MsgBox "Tapez la RefClient Rechercher"
    Exit Sub
End If
If RefClient.Value >= "C001" And RefClient.Value <= "C054" Then
    With Sheets("T1")
        Set trouverefc = .Cells.Find(RefClient.Value, LookIn:=xlValues)
        If Not trouverefc Is Nothing Then
            .Range(trouverefc.Offset(2, 0), trouverefc.Offset(24, -5)).Copy Sheets("Détail").Range("B5")
            Sheets("Détail").Range("G3").Value = RefClient.Value
            Sheets("Détail").Range("C3").Value = Mois.Value
        End If
    End With
ElseIf RefClient.Value >= "C055" And RefClient.Value <= "C088" Then
    With Sheets("T2")
        Set trouverefc = .Cells.Find(RefClient.Value, LookIn:=xlValues)
        If Not trouverefc Is Nothing Then
            .Range(trouverefc.Offset(2, 0), trouverefc.Offset(24, -5)).Copy Sheets("Détail").Range("B5")
            Sheets("Détail").Range("G3").Value = RefClient.Value
            Sheets("Détail").Range("C3").Value = Mois.Value
        End If
    End With
ElseIf RefClient.Value >= "C089" And RefClient.Value <= "C111" Then
    With Sheets("T3")
        Set trouverefc = .Cells.Find(RefClient.Value, LookIn:=xlValues)
        If Not trouverefc Is Nothing Then
            .Range(trouverefc.Offset(2, 0), trouverefc.Offset(24, -5)).Copy Sheets("Détail").Range("B5")
            Sheets("Détail").Range("G3").Value = RefClient.Value
            Sheets("Détail").Range("C3").Value = Mois.Value
        End If
    End With
End If
End Sub

Question? quand tu auras plusieurs mois pour la même refclient, les feuilles T1 T2 et T3 vont avoir beaucoup de ligne non?
Il faut savoir que cette macro ne gère pas plusieurs mois pour la même refclient, en fait elle récupère les données pour le premier refclient trouvé.

Edit: en déclarant trouverefc c'est mieux :D
 
Dernière édition:

br44

XLDnaute Impliqué
Re : Rechercher sur plusieures feuilles

Re:Bonjour Skoobi ,le forum

Merçi beaucoup pour cette macro chapeau bas Mister SKOOBI .

Pour répondre à t'as question : le problème de selection du mois ne se pose pas ,car j'ai prèvu un boutton pour Archiver mes données une fois le mois terminés les feuilles s'effaceront automatiquement après copie vers se fichier . s'est aussi par se fichier que se fera l'impression de toutes les factures .

Bon le temps d'ètudier et de tester et je te tient au courant de la suite .

Avec tout mes remerciments BR44
 

br44

XLDnaute Impliqué
Re : Rechercher sur plusieures feuilles

Re:Rebonsoir à tous ,

Aprés avoir testé ta macros qui fonctionne trés bien je fais un point sur se qui reste à faire .


Observation : Je supose que le faite que "Mois.Value" soit une liste de choix dans l'UserForm empêche son affichage dans la feuille "détail" voir ta ligne de code :

Sheets ("détail").Range ("C3").Value =Mois.Value Pas d'affichage ?

Voilà un point de fait

A voir : peut-on affiche le N° de la facture lie à la fiche ?

A la validation il faudrait que le N° de facture ne s'acrèmente pas si possible ?

Enfin peut_on renvoyer les infos modifiées ,dans la feuille "T1" à l'endroit où de trouve la fiche ? (afin déviter les doublons ) .

Voilà les points qui reste à voire .

Je reflichi sur les solutions à apporter :

1° je pourrais crèer un nouvel Userform pour les modifs ,basé sur le principal mais avec un bouton "Valider les modif " . Où si c'est possible un sous-Formulaire ?

2° Pour le renvoies des données sachant que les fiches (Ensemble "Détail"+"Facture") sont constituées de 79 lignes sur 7 colonnes et qu'elles se trouveront au même endroit , peut-être qu'avec une formule du style:
If RefClient.Value= ""Then
For i=1 To 1500 Step 79
Sheets("Détail") .Range("B5:G29") .value .Copy
pour la suite " ta macro" qui enverait la plage Aprés l'avoirs trouvé en :
Sheets("T1") .Range(B":G")

Bon voilà où j'en suis , je prèpare ça et je le post sur le fil .

Je te souhaite une bonne soirée et te dis à bientôt et merçi encore pour le coup de main . A plus Br44
 

Banzai64

XLDnaute Accro
Re : Rechercher sur plusieures feuilles

Bonsoir

BR44 quelques questions
A quoi servent les pages 'AnnexFacture1' et 'AnnexFacture' il me sembe que tu copies 'AnnexFacture1' à la suite de 'Facture' ?
Les feuilles T1,T2,T3 et GroupageClients servent à visualiser les pages ou seulement au stockage ?
Si uniquement stockage peut-on envisager une autre manière de stockage ?
Le découpage (Tel numéro dans telle page) est il important ?
Beaucoup de problèmes lors des copies avec les cellules fusionnées (A Bannir)
 

skoobi

XLDnaute Barbatruc
Re : Rechercher sur plusieures feuilles

Re bonjour br44 Banzai64,

peut-on affiche le N° de la facture lie à la fiche ?
C'est fait.
A la validation il faudrait que le N° de facture ne s'acrèmente pas si possible ?
C'est fait.

Concernant les modifications:

je te propose de garder le même userform sur ce principe:

1- en cliquant sur "modifier les fiches"
a- la variable "trouverefc" dans la macro va permettre d'éviter de faire des doublons.
b- les cases F1, F2 sont automatiquement récupérées en choisissant la journée
2- cliquer sur "valider la fiche" (que j'appelerai à ta place valider la journée ;))
Là il faudrait mettre un garde-fou, c'est-à-dire qu'il faudrait griser le bouton "modifier les fiches" pour ne pas perdre les nouvelles saisies en cours comme ceci:
Code:
CommandButton12.Enabled=False
A mettre dans le code du bouton "valider les fiches".
3- puis tu clique sur le bouton tournée correspondant.

Attention: une fois cliqué sur "modifier les fiches" il ne faut pas fermer le userform pour modifier le tableau et y retourner pour valider les modifications sous peine d'avoir un doublon (c'est pour celà que la ligne de la journée est récupérée dans le userform).

Ce principe marche pour la "tournée 1".
Il faudra que tu modifies les 2 autres code (j'ai plus le temps)
Private Sub CommandButton4_Click() 'Boutton "TOURNEE 2"
et
Private Sub CommandButton10_Click() 'Boutton"Tournée 3"
sur le même principe que le code
Private Sub CommandButton2_Click() 'boutton "TOURNEE 1"

Voilà, c'est fini ouffff. :)
.....Ou presque quand je vois les autres boutons..... :p

Edit:

je viens de m'apercevoir que le nom du client est récupéré dans le fichier C.xls.
J'ai supprimer la liaison entre les 2 fichiers. En effet, ce serait mieux si tu mettais ce tableau des clients dans un onglet du fichier F.xls non?
 

Pièces jointes

  • F v1.zip
    43.3 KB · Affichages: 62
Dernière édition:

br44

XLDnaute Impliqué
Re : Rechercher sur plusieures feuilles

Re: Bonjour le forum ,Banzai64,Skoobi


Merçi à tous deux pour vos rèponses .

Banzai64 ,pour rèpondre à tes questions :

1) A quoi servervent les "AnnexFacture1" et"AnnexFacture 2" ?

Réponse : Comme tu la bien vu elles sont effectivement placées à la suite de la facture . Il s'agit de facture consernant des prestions supplèmentaire que l'on fait pour certain client en plus . La prestation ètant un forfait mensuel dont le montant est fixe . Voilà pourquoi j'ai placé cette facture à la suite de la "facture" des clients consernés puisqu'il ne sont qu'au nombre de deux .

2) Les feuilles T1,T2,T3 et GroupageClients servent à visualiser les pages ou seulement au stockage ?

Rèponse: Oui mais pas seulement elle permettent aussi la visaulisation des factures pour le mois en court . Elles sont ensuites envoyées dans un fichier "archive" pour y êtres stocker .

3) Le découpage (Tel numéro dans telle page) est il important ?

Rèponse: Oui car il dètermine l'ordre dans la quelle les clients sont rammassés . Les feuilles "T","T2" et "T3" détermine aussi les tournées de ramassage par ordre gèographique . La feuille "GroupagesClients " elles est purment fait pour la facturation . il s'agit d'un groupage des clients qui ont une facture commune mais des points de rammassage différant .

En se qui conserne la fusion des cellules c'est qui ma parut le plus simple pour conserver le format de base des feuilles "Factures "et "Détail " ,mais Merçi pour le conseil je tiendrais compte dans le futur .

Skoobi : Merçi pour le fichier je n'ais pas eu le temps de le regarder mais je te tient au courant des que possible .

En espèrant avoir rèpondu à t'es questions je vous dis à plus sur se fil .
BR44
 

br44

XLDnaute Impliqué
Re : Rechercher sur plusieures feuilles

Re: bonjour Skoobi,Le forum

Bon comme noter dans mon dernier message je te mets au courant .

Aprés avoir etudié ton fichier je me suis apperçu qu'il y a un décalge aprés l'envoie des modifications .

Je te joint un fichier avec mes observations et un exemples Avant et aprés modifs .

En te remerciant une fois de plus pour coup de main je te dis à bienôt sur se post .
BR44
 

Pièces jointes

  • FV2.xls
    31 KB · Affichages: 57

skoobi

XLDnaute Barbatruc
Re : Rechercher sur plusieures feuilles

Re bonjour br44,

arff, juste un petit soucis de soustraction ;).
Les 2 modifications à faire dans le bouton "tournée 1":

Code:
 Private Sub CommandButton2_Click() 'boutton "TOURNEE 1"
'J'enregistre les fiches pour la "T1"
If Range("G3").Value >= "C001" And Range("G3").Value <= "C054" Then
    If Range("G3").Value = "C001" Then
        L = 1
    Else: L = 3
    End If
'si une modification n'est pas en cours
    If trouverefc Is Nothing Then
        Sheets("Détail").Range("1:29").Copy Sheets("T1").Range("A65536").End(xlUp)(L)
        Sheets("Facture").Range("1:50").Copy Sheets("T1").Range("A65536").End(xlUp).Offset(1, 0)
    Else
'si une modification est en cours
        Sheets("Détail").Range("A1:G29").Copy trouverefc.Offset(-2, -6)
        Sheets("Facture").Range("A1:G49").Copy trouverefc.Offset([B][COLOR="Red"][SIZE="3"]27[/SIZE][/COLOR][/B], -6)
    End If
End If
'J'envoie "l'AnnexFacture1"vers la feuille"T1"
If Range("G3").Value = "C054" Then
'si une modification n'est pas en cours
    If trouverefc Is Nothing Then
        Sheets("AnnexFacture1").Range("1:50").Copy Sheets("T1").Range("A65536").End(xlUp).Offset(1, 0)
    Else
'si une modification est en cours
        Sheets("AnnexFacture1").Range("A1:G49").Copy trouverefc.Offset([B][COLOR="Red"][SIZE="3"]73[/SIZE][/COLOR][/B], -6)
    End If
End If
End Sub

Je te souhaite de bonnes fêtes de fin d'année car je ne serais plus là pendant quelque jours. :)
 
Dernière édition:

br44

XLDnaute Impliqué
Re : Rechercher sur plusieures feuilles

Re: rebonjour SKOOBI ,le forum


Merçi pour la rapiditée de la rèponses je fais la modifs .

Petite question en passant :
Es-ce la même procèdures pour le groupage clients où faut-il recalculer les écarts ?

Bonnes fêtes de noël à toi aussi et à plus sur ce post
BR44
 

br44

XLDnaute Impliqué
Re : Rechercher sur plusieures feuilles

Re: bonjour le forum ,SKOOBI,


ce petit message pour faire un point de la situation .

1°) le program fonctionne sauf pour une petite chose suivante:

Ma formule Excel qui sert de liaison entre mon fichier "Facture" et mon fichier "Clients" se dèclace aprés les modification se qui provoque une erreur "NA!" lors de l'affichage de l"addresse du client .

Je voulais savoire si il serait possible de modifier la ligne de program qui suit pour qu'elle ne copie que le "formats" et les "valeures "sans la formule ? :

Sheets("Facture").Range("A1:G50").Copy TrouveRefC.Offset(27, -6)

2°) J'ai mis la même procèdure en place pour la feuille "GroupageClients" et la la macro me fais une multicopie des clients selectionnés . donc là je ne vois pas comment faire pour le rectifier ?

Bon voilà où j'en suis en se lendemain de fête qui j'èspère ses bien passè . Je vous souhaite donc bon rèveillon de fin d'année à tous et toutes et vous dis à bienôt sur se fil .
Merçi à tous ceux qui lirons et rèponderont à se fil
Br44
 

Pierrot93

XLDnaute Barbatruc
Re : Rechercher sur plusieures feuilles

Bonjour br44

Pour ta 1ère question, utilisation d'un collage spécial, essaye peut être le code ci dessous :

Code:
Sheets("Facture").Range("A1:G50").Copy
With TrouveRefC.Offset(27, -6)
    .PasteSpecial xlPasteValues
    .PasteSpecial xlPasteFormats
End With

en supposant que "TrouveRefC" soit bien une variable déclarée de type "range".

bonne soirée
@+
 

br44

XLDnaute Impliqué
Re : Rechercher sur plusieures feuilles

Re:Rebonsoire le forum ,Bonsoir Pierrot93,


Merçi pour la rapidité de ta rèponse . Aprés avoir testé ta solution j'ai maintenant une erreure "1004 " "Zonne de collage differente de celle copié" et cela copie toujour la formule ce qui à pour consequence d'annuler toutes les adresses clients (Celle en cours + toutes les autres ) en affichant "NA!" .

la cause de cette erreure est situé au niveau de " .PasteSpecial xlPasteValues"
Bizzarie du fait que j'ai procédé de la même manière pour la partie avant modification et que ça marche ?

Ci-dessous la partie de la macro complète :


Private Sub CommandButton2_Click() 'boutton "TOURNEE 1"
'J'enregistre les fiches pour la "T1"
If Range("G3").Value >= "C001" And Range("G3").Value <= "C054" Then
If Range("G3").Value = "C001" Then
L = 1
Else: L = 3
End If
'si une modification n'est pas en cours
If TrouveRefC Is Nothing Then
Sheets("Détail").Range("1:29").Copy Sheets("T1").Range("A65536").End(xlUp)(L)
With Sheets("Facture").Range("1:50").Copy
End With
With Sheets("T1").Range("A65536").End(xlUp).Offset(1, 0)
.PasteSpecial Paste:=xlValues
.PasteSpecial Paste:=xlFormats
End With
Else
'si une modification est en cours
Sheets("Détail").Range("A1:G29").Copy TrouveRefC.Offset(-2, -6)
With Sheets("Facture").Range("A1:G50").Copy
End With
With TrouveRefC.Offset(27, -6)
.PasteSpecial Paste:=xlValues 'Modifier pour le teste
.PasteSpecial Paste:=xlFormats
End With
End If
End If

Bon voilà où j'en suis je te dis à plus sur se post et encore merçi pour ta participation .
Br44