XL 2019 Duplication de données via module ou macro excel

Malika27

XLDnaute Nouveau
Bonjour à toutes et tous :)

J'essaie d'automatiser mon fichier excel mais je ne suis pas très à l'aise avec l'environnement requête vba ou module.
J'ai deux onglets dans mon fichiers avec des informations redondantes. Je cherche à créer une requête qui puisse "scanner" les informations figurants dans un onglet pour les coller dans le second. J'ai créé des fonctions qui ne sont pas pérennes aussi si vous pouviez m'aider car malgré les tutos et autres je peine.
J'ai aussi tenté d'ajouter des sous-totaux dans mes tableaux (semestriel, annuel) ----> onglet : Liste_locataire en vains si vous avez une idée cela me serait très utile.

Merci mille fois de votre aide :)

 

Pièces jointes

  • Tableau-Pilotage-Biens.xls.xlsm
    29.4 KB · Affichages: 6
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Tu veux dire que tu veux créer un onglet mensuel par locataire ?

Il n'y a pas de champs Date dans ton classeur

Normalement, on mets toutes les données sur une seule feuille (qui sert de base de données)
En ligne 1, on mets le nom des champs.
Ensuite c'est avec les TCD qu'on visualises sur des feuilles tierces les données selon les besoins
(par mois, par année etc ..)
On peut aussi utiliser une chronologie

Je fais cela tous les jours.

Une feuille unique en guise de base de données et tout le reste piloté par TCD (un ou plusieurs)
(avec parfois des macros VBA pour les tâches répétitives)

On peut aussi utiliser avec les versions récentes d'Excel: PowerQuery qui est une sorte de "TCD ultra-évolué"
 
Dernière édition:

Malika27

XLDnaute Nouveau
Re

Tu veux dire que tu veux créer un onglet mensuel par locataire ?

Il n'y a pas de champs Date dans ton classeur

Normalement, on mets toutes les données sur une seule feuille (qui sert de base de données)
En ligne 1, on mets le nom des champs.
Ensuite c'est avec les TCD qu'on visualises sur des feuilles tierces les données selon les besoins
(par mois, par année etc ..)
On peut aussi utiliser une chronologie

Je fais cela tous les jours.

Une feuille unique en guise de base de données et tout le reste piloté par TCD (un ou plusieurs)
(avec parfois des macros VBA pour les tâches répétitives)

On peut aussi utiliser avec les versions récentes d'Excel: PowerQuery qui est une sorte de "TCD ultra-évolué"
En fait je veux créer un onglet par bien, cet onglet doit être pré renseigné de façon automatique chaque mois (titre colonne : période) avec processus de validation si le paiement est enregistré. Si non c'est un courrier de relance qui part.
C'est la raison pour laquelle j'aimerai avoir une macro que je pourrais éventuellement faire évoluer dans la mesure du possible.
J'aurais des difficultés à initier la macro une fois créer je pense pouvoir me débrouiller.
Peux tu me donner un coup de main merci encore
 

Staple1600

XLDnaute Barbatruc
Re

Comme je l'ai dit précédemment, le plus simple c'est de créer des TCD à la demande
Par exemple, pour filtrer par locataire, tu mets le champ Locataire dans la section FILTRES du TCD
puis tu sélectionnes le locataire idoine et tu exportes le résultat en PDF par exemple

Bref ma philosophie c'est d'aller au plus simple.
Une base avec toutes les données utilises
Et les visualisations, rapport, export etc sont réalisés grâce aux TCD (et à toutes les options qu'ils offrent.

En bonus, juste pour étude une petite macro que je te laisse tester
VB:
Sub creation_onglets()
Dim lo As ListObject
Application.ScreenUpdating = False
Set lo = Feuil5.ListObjects("Biens")
For i = 2 To lo.DataBodyRange.Rows.Count + 1
Sheets.Add.Name = UCase(Split(lo.ListColumns(9).Range(i, 1).Value2)(1))
Next
End Sub
NB: G..gle est ton ami pour savoir comment lancer une macro dans Excel
Tu devrais trouver au moins 1600 tutos qui te l'expliqueront ;)
 

Malika27

XLDnaute Nouveau
Re

Comme je l'ai dit précédemment, le plus simple c'est de créer des TCD à la demande
Par exemple, pour filtrer par locataire, tu mets le champ Locataire dans la section FILTRES du TCD
puis tu sélectionnes le locataire idoine et tu exportes le résultat en PDF par exemple

Bref ma philosophie c'est d'aller au plus simple.
Une base avec toutes les données utilises
Et les visualisations, rapport, export etc sont réalisés grâce aux TCD (et à toutes les options qu'ils offrent.

En bonus, juste pour étude une petite macro que je te laisse tester
VB:
Sub creation_onglets()
Dim lo As ListObject
Application.ScreenUpdating = False
Set lo = Feuil5.ListObjects("Biens")
For i = 2 To lo.DataBodyRange.Rows.Count + 1
Sheets.Add.Name = UCase(Split(lo.ListColumns(9).Range(i, 1).Value2)(1))
Next
End Sub
NB: G..gle est ton ami pour savoir comment lancer une macro dans Excel
Tu devrais trouver au moins 1600 tutos qui te l'expliqueront ;)
@Staple1600 :( c'est oki :) il est vrai que j'ai parfois tendance à complexifier les choses inutilement :rolleyes: du coup je vais suivre ce précieux conseil faire au plus simple. J'ai testé la macro elle fait le job je m'en servirai pour me perfectionner :)
merci encore pour tes conseils
 

Staple1600

XLDnaute Barbatruc
Re

Pour te convaincre des bienfaits d'un TCD
Un petit exercice entre le café et les croissants du dimanche
Sur une feuille vierge, lance la macro ci-dessous
VB:
Sub CREER_EXEMPLE()
Range("A1:E1") = Array("Locataires", "Biens", "ADRESSE", "CP", "VILLE")
Range("A2:A6").FormulaR1C1 = "=""locataire NOM ""&ROW()-1&"" PRENOM ""&REPT(ROW()-1,15)"
Range("B2:E6").FormulaR1C1 = "=R1C&"" ""&ROW()-1"
Range("A1:E6") = Range("A1:E6").Value
Range("A1:E6").Columns.AutoFit
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$E$6"), , xlYes).Name = "Tableau1"
ActiveSheet.Name = "BASE"
End Sub
Tu obtiens un tableau avec des noms de locataires qui dépassent 31 caractères
Ci-dessous un code VBA (que j'ai emprunté à job75 )
Il a pour vocation de créer un onglet par locataire
VB:
Sub Eclater_Tableau()
Dim F As Worksheet, s As Object, tablo, d As Object, i&, a
Set F = Sheets("BASE")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
'---suppression des feuilles existantes---
For Each s In Sheets
    If s.Name <> F.Name Then s.Delete
Next s
'---liste sans doublon des feuilles à créer---
tablo = F.ListObjects(1).DataBodyRange.Value
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
    If tablo(i, 1) <> "" Then d(Left(tablo(i, 1), 31)) = ""
Next i
If d.Count = 0 Then Exit Sub
'---création des feuilles---
a = d.keys
With F.ListObjects(1).DataBodyRange
    For i = 0 To UBound(a)
        Sheets.Add After:=Sheets(Sheets.Count)
        ActiveSheet.Name = a(i)
        If ActiveSheet.Name <> a(i) Then MsgBox "Caractère interdit dans '" & a(i) & "' !", 48
        .AutoFilter 1, a(i) & IIf(Len(a(i)) = 31, "*", "")
        .Copy ActiveSheet.Cells(1)
        ActiveSheet.Cells.Columns.AutoFit
    Next i
End With
F.ListObjects(1).AutoFilter.ShowAllData
F.Activate
End Sub
N'est-ce pas plus simple de passer par le TCD (qui se pilote à la souris) ?
exemple_TCD.png

Car imagine que tu as 100 locataires dans ton tableau, tu vas créer 100 onglets dans ton classeur ?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Ce qu'Hasco veut dire (avec là aussi un humour en Option Explicit ;))
Oui et que rédiger, à l'intérieur du classeur (qu'il faut donc téléchargé, puis ouvrir) une demande telle que :
VB:
Besoin

Via une macro ou un module

récupérer les infos redondantes issus des onglets : Liste_Biens  --> automatiquement
créer des sous-totaux par locataire (semestriel, annuel) ----> onglet : Liste_locataire
archiver les locataires partie ---> onglet Liste_locataire
créer un bouton permettant l'affichage par biens, bailleur, ville ---> deux onglets

tient plus du cahier des charges que de la demande de 'coup de pouce' parce qu'on est bloqué sur une partie précise du développement de son application.

Répondre à ce genre de demandes serait pour moi, de la concurrence déloyale envers les sociétés de services informatiques.

D'autant que lorsqu'on est une société immobilière, on devrait pouvoir dégager des fonds pour améliorer la gestion des biens qu'on a en charge.

Ici il y a des intervenants bénévoles qui pour certains paient de leur poches (mises à jour logiciel, etc) pour pouvoir continuer à satisfaire les demandes de dépannage.
je croyais qu'il s'agissait d'un forum contributif ?
oui et en quoi contribuez-vous ?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour Hasco

Est-ce au moins tu es d'accord sur mon prosélytisme tcdien ? ;)

NB: La "concurrence déloyale" elle se fait déjà sur XLD par le traitement de question en peer to peer (par le biais d'échanges en MP et/ou avec Teamviewer) malgré le fait que la charte demande de ne point le faire.
Quant à savoir, si cela remplit le bas de laine des XLDnautes "bénévoles mais un petit billet c'est pas de refus", j'en sais fichtrement rien. ;)
 

Malika27

XLDnaute Nouveau
Oui et que rédiger, à l'intérieur du classeur (qu'il faut donc téléchargé, puis ouvrir) une demande telle que :
VB:
Besoin

Via une macro ou un module

récupérer les infos redondantes issus des onglets : Liste_Biens  --> automatiquement
créer des sous-totaux par locataire (semestriel, annuel) ----> onglet : Liste_locataire
archiver les locataires partie ---> onglet Liste_locataire
créer un bouton permettant l'affichage par biens, bailleur, ville ---> deux onglets

tient plus du cahier des charges que de la demande de 'coup de pouce' parce qu'on est bloqué sur une partie précise du développement de son application.

Répondre à ce genre de demandes serait pour moi, de la concurrence déloyale envers les sociétés de services informatiques.

D'autant que lorsqu'on est une société immobilière, on devrait pouvoir dégager des fonds pour améliorer la gestion des biens qu'on a en charge.

Ici il y a des intervenants bénévoles qui pour certains paient de leur poches (mises à jour logiciel, etc) pour satisfaire les demandes de dépannage.

oui et en quoi contribuez-vous ?
Oui et que rédiger, à l'intérieur du classeur (qu'il faut donc téléchargé, puis ouvrir) une demande telle que :
VB:
Besoin

Via une macro ou un module

récupérer les infos redondantes issus des onglets : Liste_Biens  --> automatiquement
créer des sous-totaux par locataire (semestriel, annuel) ----> onglet : Liste_locataire
archiver les locataires partie ---> onglet Liste_locataire
créer un bouton permettant l'affichage par biens, bailleur, ville ---> deux onglets

tient plus du cahier des charges que de la demande de 'coup de pouce' parce qu'on est bloqué sur une partie précise du développement de son application.

Répondre à ce genre de demandes serait pour moi, de la concurrence déloyale envers les sociétés de services informatiques.

D'autant que lorsqu'on est une société immobilière, on devrait pouvoir dégager des fonds pour améliorer la gestion des biens qu'on a en charge.

Ici il y a des intervenants bénévoles qui pour certains paient de leur poches (mises à jour logiciel, etc) pour satisfaire les demandes de dépannage.

oui et en quoi contribuez-vous ?
Bonjour @Hasco Pour l'heure je ne contribue en rien mais si j'ai l'opportunité de le faire ce sera sans aucune hésitation si cela rentre dans mes compétences. Vous semblez m'avoir prise en "grippe" j'en ignore la raison. Je ne vous ai pas sollicité en particulier. Pour ton information je ne travaille pas, j'essaie juste un fichier de me former sur les requêtes vba excel, pour le reste je me débrouille. Je demanderai tout de même au modérateur ce qu'il pense de ces échanges car personnellement je n'apprécie pas les attaques gratuites. Bonne fin de journée.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

En écrivant des choses de ce genre, c'est mal parti ;)
Malika¸ qui ne doute de rien à dit:
oui j'ai fais le test, je vais travailler pour améliorer ce code
Tu veux améliorer mon code?
Mazette!
J'aimerai bien voir quelle amélioration tu pourras apporter étant donné que ce n'est qu'un code de test censé vanter les mérites du TCD vs le VBA.

Si tu as fais le test, tu n'as pas de questions?

Car qui a écrit ?
mais je ne suis pas très à l'aise avec l'environnement requête vba ou module.
Logiquement en tant que débutante, tu aurais du me poser des questions, non ?

NB: Tu n'es pas prise à partie.
(Certains d'entre nous sont juste francs et directs)
Mais peux-tu répondre à cette question?
Pourquoi tu n'as pas lu la charte du forum lors de ton inscription?
(Alors qu'il est demandé de le faire)
Cela t'aurait éviter quelques déconvenues ;)
 

Malika27

XLDnaute Nouveau
Re

En écrivant des choses de ce genre, c'est mal parti ;)

Tu veux améliorer mon code?
Mazette!
J'aimerai bien voir quelle amélioration tu pourras apporter étant donné que ce n'est qu'un code de test censé vanter les mérites du TCD vs le VBA.

Si tu as fais le test, tu n'as pas de questions?

Car qui a écrit ?

Logiquement en tant que débutante, tu aurais du me poser des questions, non ?

NB: Tu n'es pas prise à partie.
(Certains d'entre nous sont juste francs et directs)
Mais peux-tu répondre à cette question?
Pourquoi tu n'as pas lu la charte du forum lors de ton inscription?
(Alors qu'il est demandé de le faire)
Cela t'aurait éviter quelques déconvenues ;)
Bonsoir,
Je dois être un brin "susceptible" mais les remarques que je me suis prises m'ont bien refroidie.
Pour ce qui est de la charte, je l'ai peut être lu rapidement comme je le fais habituellement, mais je ne manquerais pas de la relire ... Ceci étant cela ne justifie en rien l'attitude de @Hasco! Moi, je ne qualifie pas ses propos de "francs parler" c'est de la méchanceté gratuite...
Au regard de l'évolution de notre société moderne et de la violence qui l'accompagne et qui semble devenir une seconde nature pour quelques personnes, je me demande si finalement ce n'est pas mon prénom qui fait pas tâche.
J'avoue me poser la question.
Quoiqu'il en soit merci à toi @Staple1600 pour ton aide :) des questions oui j'en avais beaucoup... mais j'ai cru comprendre que Google est un ami et qu'il doit vite devenir mon meilleur ami :)
Je vais corriger mon propos "améliorer ton code" c'est beaucoup trop ambitieux voir prétentieux désolée de t'avoir offensé (joke). Je voulais juste dire essayer de comprendre ton code (car pour moi c'est du "chinois" sans manquer de respect ou porter atteinte à qui que ce soit) pour l'adapter à mes attentes.
Merci encore de ton aide et de ton amabilité.
Bien cordialement
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16