Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Créer Macro permettant d'indexer des nouveaux clients ? [Résolu]

fanou06

XLDnaute Occasionnel
Bonjour,

Dans l'onglet NbRDV je calcule le nombre de RDV du client selon les mois.
J'ai mis la formule suivante :

Code:
=SOMME((TEXTE(RDV!$B$2:$B$3000;"mmmm")=NbRDV!B$1)*(RDV!$A$2:$A$3000=NbRDV!$A2))

Elle semble fonctionner.

Par contre :
Est-il possible par une macro de mettre à jour le tableau de l'onglet NbRDV au sur et à mesure de la saisie de nouveau RDV dans l'onglet RDV ?
Et de ce fait, d'incrémenter les nouveaux noms ?

Je pensais faire ainsi :

1. BDD Clients : Une fois la mise à jour faite, copier A2:A500
2. NbRDV : Copier en A2 les cellules copiées de l'onglet BDD Clients
3. Trier A:A
4. Glisser les formules.

Macro :

Mais est-ce qu'il n'y a pas plus simple ? Et en gardant les formules ?
Car la Macro est fastidieuse.
Peut être copier la dernière ligne et copier la formule ?
Mais je pense il doit y avoir plus simple (plus propre surtout) ?


Merci.
 
Solution
Hello,
bon. y a un moment, faut arrêter de faire tout et n'importe quoi !
dans la dernière PJ que tu as mise, ce n'EST PAS celle que je t'ai donnée !!
tu n'a pas gardé les tables de la feuille BDD, la table des catégories s'appelle encore "tableau15, alors que je l'avais renommée "t_Catégories"
idem pour les mois et box

Dans la feuille "Formulaire"
tu persistes à définir les listes de validation avec du "='BDD CLIENTS'!$A:$A"
ce qui prend TOUTE la colonne.. donc avec 1 000 000 de lignes vides ==> AUCUN intérêt
moi je t'avais mis des listes de validation à base de =indirect("t_Nom") ou indirect("t_Tarifs").....

Dans la feuille "NbRDV2023"
tu persisites à mettre tes formules à base de Somme(texte.....), alors qu'il y avait des formules...

Gégé-45550

XLDnaute Accro
Bonjour,
Un petit fichier anonymisé représentatif de la question à traiter serait beaucoup plus parlant qu'une longue explication avec du code inutile puisqu'on n'a pas le fichier correspondant.
Les questions :
  • que sont les nouveaux RdV du client ? des dates, des noms, autre chose ?
  • qu'entendez-vous par incrémenter les nouveaux noms ?
De base, pour incrémenter une liste, il existe une solution simple : la préfixer par le numéro de ligne mais, sans savoir ce que vous voulez vraiment faire, impossible de dire si c'est la bonne solution pour vous.
Cordialement,
 

fanou06

XLDnaute Occasionnel
Merci beaucoup.
Tout est anonymisé.

Ma demande en fait car pour le moment c'est une macro fastidieuse que j'ai essayé.
Je cherche :

1. J'ajoute un client dans l'onglet "BDD CLIENTS".
2. La macro devrait donc lorsque je l'exécute copier les nouveaux clients dans "NbRDV" et laisser les formules pour les statistiques.

Merci pour la piste.
 

Pièces jointes

  • TABLEAU_SUIVI_REGLEMENT_RDV PATIENT_2023 V_ESSAI.xlsm
    121 KB · Affichages: 8

vgendron

XLDnaute Barbatruc
En utilisant correctement les tables structurées (PAS de ligne vide)
la macro se contente de rajouter une ligne par client non listé dans la table t_2023
j'ai affecté la macro "NouveauClient" au deuxième bouton de ta feuille

PS: ta feuille BDD: j'ai modifié la disposition des données==> à mettre sous forme de table structurée également avec des noms explicites genre: "t_mois" ou "t_Statut".....
 

Pièces jointes

  • TABLEAU_SUIVI_REGLEMENT_RDV PATIENT_2023 V_ESSAI.xlsm
    74 KB · Affichages: 3

vgendron

XLDnaute Barbatruc
en PJ, je me suis permis quelques optimisations de ton code
ex: les MFC: on ne les applique QUE sur les plages de données et pas sur la feuille entière
lors l'ajout de données dans la table, les MFC, formules etc sont recopiées

les macro travaillent directement avec les tables structurées (que j'ai renommées pour faciliter leur identification)

dans ton tableau NbRDV2023, j'ai modifié les formules pour exploiter les noms de colonnes et limiter aux lignes qui contiennent effectivement des données

la feuille "dépense détail" n'étant pas dans le fichier, je n'ai pas touché aux macros qui la concernent...
 

Pièces jointes

  • TABLEAU_SUIVI_REGLEMENT_RDV PATIENT_2023 V_ESSAI.xlsm
    76.9 KB · Affichages: 6

fanou06

XLDnaute Occasionnel
Après essai dans mon tableau final (non anonymisé) ça ne fonctionne pas.
Par exemple, en tableau structuré le titre est classé aussi dans les clients.
Et quand j'ajoute un client et un rdv, pas de calcul
 

fanou06

XLDnaute Occasionnel
Ah oui, c'est bien.
Faut que je fasse ainsi sur mon tableau final.
Mais j'ai des bugs en recopaint
 

vgendron

XLDnaute Barbatruc
un peu de lecture ici, ca peut sans doute t'aider


 

fanou06

XLDnaute Occasionnel
Après essais, ca ne fonctionne pas.
Dans l'onglets NbRDV la première ligne (entetes) se classe comme les noms des clients

Dois-je changer quelque chose dans le code ?

VB:
Sub CopieAuto()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim rngTableau1 As Range, rngTableau2 As Range
    Dim lastRow As Long
   
    ' Spécifiez le nom des feuilles de calcul (ajustez-les selon vos noms de feuilles)
    Set ws1 = ThisWorkbook.Sheets("BDD CLIENTS")
    Set ws2 = ThisWorkbook.Sheets("NbRDV")
   
    ' Détermine la dernière ligne du "Tableau 1"
    lastRow = ws1.Cells(Rows.Count, "A").End(xlUp).Row
   
    ' Définit la plage de données dans "Tableau 1" (supposons que les données sont dans la colonne A)
    Set rngTableau1 = ws1.Range("A2:A" & lastRow)
   
    ' Définit la plage de destination dans "Tableau 2" (supposons que les données seront collées dans la colonne A)
    Set rngTableau2 = ws2.Range("A2")
   
    ' Copie les données du "Tableau 1" vers le "Tableau 2"
    rngTableau2.Resize(rngTableau1.Rows.Count, 1).Value = rngTableau1.Value
End Sub

Si je reprends la macro proposée ci-dessus par @vgendron j'ai cette erreur :

Pourtant je renomme les données en t_Clients . . .

Merci
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…