XL 2010 Userform connection des donnnés au formulaire

fredobogoss

XLDnaute Junior
Bonjour,
je souhaiterais de l'aide pour un userfrom.
la connection des données avec le userform ne se fait pas, je souhaite pouvoir modifier les données existantes via le userform ou ajouter une personnes
et effectuer une recherche.
Merci par avance pour vos réponses
 

Pièces jointes

  • BD etiquetes.xlsm
    23.9 KB · Affichages: 32

fredobogoss

XLDnaute Junior
Bonjour fredobogoss
Bonjour le Fil ,le Forum
Francois , très beau travail!
je me suis permis de rajouter en tête de la Procédure Groupe().
VB:
Sub Groupe()
Application.ScreenUpdating = False
'CODE
'puis à la Fin de cette même procédure
Application.ScreenUpdating = True
End Sub
je me pose une question , il n'y a pas a tenir compte des Dates
je m'explique , il n'y a pas dans cette BD de cas ou l'on pourrait trouver par exemple :

c'est a dire une même Chambre (326) avec des occupations(Dates Différentes) 07/03/2018 et 08/03/2018
Bonne journée
jean marie

non il y pas de cas ou tu peux trouver de date a date comme tu as mentionnée.
dans une chambre il peut y voir 1 ou plusieurs personne max a 4 a 5.
c'est juste pour m'aider a faire des étiquettes plus rapidement. je regroupe sur une seul étiquettes le nom de toutes les personnes ayant la même chambre.
le post #24 est m'a proposer une solution qui me convient.

je recherche a automatiser le publipostage en un clic pour envoyer les données vers mon model d’étiquettes word.
 

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous :)

Une correction de la macro Groupe

VB:
Sub Groupe()
Dim derlig As Long, ligne As Long

    Application.ScreenUpdating = False

    Sheets("Par Chambre").Range("a2:f65000").Clear

    With Sheets("Client")
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("a2:f" & derlig).Copy Sheets("Par Chambre").Range("a2")
    End With

    With Sheets("Par Chambre")
        ligne = 2
        Do While .Cells(ligne, 1) <> ""
            If .Cells(ligne, 5).Value = .Cells(ligne + 1, 5).Value Then
                .Cells(ligne, 1).Value = .Cells(ligne, 1).Value & Chr(10) & .Cells(ligne + 1, 1).Value
                .Cells(ligne, 2).Value = .Cells(ligne, 2).Value & Chr(10) & .Cells(ligne + 1, 2).Value
                .Rows(ligne + 1).Delete
            Else
                ligne = ligne + 1
            End If
        Loop
    End With
 

Dranreb

XLDnaute Barbatruc
Je ne comprends pas pourquoi vous passez par Word pour imprimer. De toute façon moi je ne sais pas automatiser ça. Alors j'aimerais un modèle des étiquettes pour les faire dans une feuille Excel à imprimer.
Pour récupérer le fichier texte il est possible de lire le fichier en VBA. Ça peut être plus rapide que de l'ouvrir avec Excel, mais j'aimerais alors un modèle exact de sa structure.
Mon UserForm permettant de chercher un nom, prénom ou numéro de chambre, soit en les sélectionnant soit en les tapant, vous intéresse-t-il ?
Il permettra aussi de changer le numéro de chambre d'une personne. J'ai déjà retiré de la recherche les dates.
 
Dernière édition:

fredobogoss

XLDnaute Junior
Bonjour à tous :)

Une correction de la macro Groupe

VB:
Sub Groupe()
Dim derlig As Long, ligne As Long

    Application.ScreenUpdating = False

    Sheets("Par Chambre").Range("a2:f65000").Clear

    With Sheets("Client")
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("a2:f" & derlig).Copy Sheets("Par Chambre").Range("a2")
    End With

    With Sheets("Par Chambre")
        ligne = 2
        Do While .Cells(ligne, 1) <> ""
            If .Cells(ligne, 5).Value = .Cells(ligne + 1, 5).Value Then
                .Cells(ligne, 1).Value = .Cells(ligne, 1).Value & Chr(10) & .Cells(ligne + 1, 1).Value
                .Cells(ligne, 2).Value = .Cells(ligne, 2).Value & Chr(10) & .Cells(ligne + 1, 2).Value
                .Rows(ligne + 1).Delete
            Else
                ligne = ligne + 1
            End If
        Loop
    End With

Salut,
a quel parti de la macro cela concerne stp, que veux dire ta correction ?
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous :)

@fredobogoss : c'est la macro proposée dans le fichier du post #25 de fanfan38 pour le regroupement des données.

VB:
Sub Groupe()
  Dim derlig As Long, ligne As Long
    Sheets("Par Chambre").Select
    Range("A2:F65000").Clear
    Sheets("Client").Select
    derlig = Range("a2").End(xlDown).Row
    Range("A2:F" & derlig).Select
    Selection.Copy
    Sheets("Par Chambre").Select
    Range("A2").Select
    ActiveSheet.Paste
    Range("A2").Select
  ligne = 2
  Do While Cells(ligne, 1) <> ""
    If Cells(ligne, 5).Value = Cells(ligne + 1, 5).Value Then
       Cells(ligne, 1).Value = Cells(ligne, 1).Value & Chr(10) & Cells(ligne + 1, 1).Value
       Cells(ligne, 2).Value = Cells(ligne, 2).Value & Chr(10) & Cells(ligne + 1, 2).Value
       Rows(ligne + 1).Delete
     Else
       ligne = ligne + 1
     End If
   Loop
End Sub

Correction de Lone-wolf ci-dessous

VB:
Sub Groupe()
Dim derlig As Long, ligne As Long

    Application.ScreenUpdating = False

    Sheets("Par Chambre").Range("a2:f65000").Clear

    With Sheets("Client")
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("a2:f" & derlig).Copy Sheets("Par Chambre").Range("a2")
    End With

    With Sheets("Par Chambre")
        ligne = 2
        Do While .Cells(ligne, 1) <> ""
            If .Cells(ligne, 5).Value = .Cells(ligne + 1, 5).Value Then
                .Cells(ligne, 1).Value = .Cells(ligne, 1).Value & Chr(10) & .Cells(ligne + 1, 1).Value
                .Cells(ligne, 2).Value = .Cells(ligne, 2).Value & Chr(10) & .Cells(ligne + 1, 2).Value
                .Rows(ligne + 1).Delete
            Else
                ligne = ligne + 1
            End If
        Loop
    End With

Tu vois la différence?
 
Dernière édition:

fredobogoss

XLDnaute Junior
Bonjour à tous :)

@fredobogoss : c'est la macro proposée dans le fichier du post #25 de fanfan38 pour le regroupement des données.

VB:
Sub Groupe()
  Dim derlig As Long, ligne As Long
    Sheets("Par Chambre").Select
    Range("A2:F65000").Clear
    Sheets("Client").Select
    derlig = Range("a2").End(xlDown).Row
    Range("A2:F" & derlig).Select
    Selection.Copy
    Sheets("Par Chambre").Select
    Range("A2").Select
    ActiveSheet.Paste
    Range("A2").Select
  ligne = 2
  Do While Cells(ligne, 1) <> ""
    If Cells(ligne, 5).Value = Cells(ligne + 1, 5).Value Then
       Cells(ligne, 1).Value = Cells(ligne, 1).Value & Chr(10) & Cells(ligne + 1, 1).Value
       Cells(ligne, 2).Value = Cells(ligne, 2).Value & Chr(10) & Cells(ligne + 1, 2).Value
       Rows(ligne + 1).Delete
     Else
       ligne = ligne + 1
     End If
   Loop
End Sub

VB:
Sub Groupe()
Dim derlig As Long, ligne As Long

    Application.ScreenUpdating = False

    Sheets("Par Chambre").Range("a2:f65000").Clear

    With Sheets("Client")
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("a2:f" & derlig).Copy Sheets("Par Chambre").Range("a2")
    End With

    With Sheets("Par Chambre")
        ligne = 2
        Do While .Cells(ligne, 1) <> ""
            If .Cells(ligne, 5).Value = .Cells(ligne + 1, 5).Value Then
                .Cells(ligne, 1).Value = .Cells(ligne, 1).Value & Chr(10) & .Cells(ligne + 1, 1).Value
                .Cells(ligne, 2).Value = .Cells(ligne, 2).Value & Chr(10) & .Cells(ligne + 1, 2).Value
                .Rows(ligne + 1).Delete
            Else
                ligne = ligne + 1
            End If
        Loop
    End With

Tu vois la différence?

Bonjour,

malheureusement non j'ai pas vu la différence.
j'ai utilisé la macro hier dans mon formulaire il n'affiche pas toutes les chambres.
le regroupement se fait seulement si je fais un tri croissant d'abord , si j'oublie de faire un tri croissant la macro beug.
ce que je recherche c'est un petit formulaire comme le contrôle F (rechercher) qui me permet de retrouver rapidement un client soit par son nom ou numéro de chambre et rajouter une information manquantes comme son statut et l'age a coté du nom.
car la colonne age a la fusion publipostage ne reste pas a coter de chaque nom et se décale en dessous.
@fanfan38, je te tag dessus car il s'agit de la version que tu m'as envoyé.
merci pour votre aide a tous
 

fredobogoss

XLDnaute Junior
Bonjour à tous :)

Une correction de la macro Groupe

VB:
Sub Groupe()
Dim derlig As Long, ligne As Long

    Application.ScreenUpdating = False

    Sheets("Par Chambre").Range("a2:f65000").Clear

    With Sheets("Client")
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("a2:f" & derlig).Copy Sheets("Par Chambre").Range("a2")
    End With

    With Sheets("Par Chambre")
        ligne = 2
        Do While .Cells(ligne, 1) <> ""
            If .Cells(ligne, 5).Value = .Cells(ligne + 1, 5).Value Then
                .Cells(ligne, 1).Value = .Cells(ligne, 1).Value & Chr(10) & .Cells(ligne + 1, 1).Value
                .Cells(ligne, 2).Value = .Cells(ligne, 2).Value & Chr(10) & .Cells(ligne + 1, 2).Value
                .Rows(ligne + 1).Delete
            Else
                ligne = ligne + 1
            End If
        Loop
    End With

Bonjour
ci joint un extrait du fichier txt tel qu'il se télécharge dans le système.
par la suite je convertie en données (données /convertir /delimitée/...) puis je supprime les colonnes que je n'ai plus besoin et je garde seulement le nom prenom date arrivée et de fin et le numero de chambre.
je rajoute deux colonnes un pour l'age et l'autre pour le statut que je dois renseigner manuellement. d'ou j'ai besoin d'un espace pour effectuer une recherche soit par nom ou numero de chambre pour rajouter les infos manquant.
ensuite je fais un tri croissant par numero de chambre et je fais un regroupement par numero de chambre donc toutes les personnes ayant le meme numero de chambre se retrouve ensemble .
et il me reste plus qu'a lier le tout sur word pour effectuer le publispostage.

je n'arrive pas a t'envoyer mon fichier word pour le publipostage car le site ne prend pas cela en compte.
mais en gros ce sont tout les champs (nom prenom, age, date arrivée et de fin, numero de chambre, statut) c'est tout ce qui va sur l'etiquette.
j'utilise la marque Avery. je t'envoi dans un prochain poste la référence des feuilles etiquettes

ce que tu m'as envoye je n'arrive pas a le lire le codbeug.
 

Pièces jointes

  • etiquettes.txt
    6.4 KB · Affichages: 32
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour fredobogoss
Bonjour le Fil ,le Forum
fredobogoss , j’espère que conformément a la charte les Données du fichier Texte sont anonymisées !
si tel n'était pas le cas fait le nécessaire en supprimant le fichier et en le remplaçant par un autre avec des données non confidentielles .
je travaille toujours , à mon rythme sur ton fichier Lol
Petite question : dois tu pouvoir imprimer qu'une seule Étiquette
ou alors toujours l'ensemble ?
Bonne Journée
Jean amrie
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Si je comprends bien les infos Age et Statut sont uniquement ajoutées par vous ?
Je joins mon travail, corrigé selon ces information.
Je pense que vous ne trouverez pas plus souple ni pratique pour la mise à jour.
Merci de faire vos observations
 

Pièces jointes

  • CbxLiéesFredobogoss.xlsm
    161.5 KB · Affichages: 25
Dernière édition:

Dranreb

XLDnaute Barbatruc
J'ai lu quelque part que ce système de publipostage de Word (totalement mystérieux pour moi) n'accepte comme source de données que des .xls. S'il faut que mon classeur mette les étiquettes mises en forme dans un nouveau classeur de ce type, ça peut se faire sans problème.
 

fredobogoss

XLDnaute Junior
Bonjour fredobogoss
Bonjour le Fil ,le Forum
fredobogoss , j’espère que conformément a la charte les Données du fichier Texte sont anonymisées !
si tel n'était pas le cas fait le nécessaire en supprimant le fichier et en le remplaçant par un autre avec des données non confidentielles .
je travaille toujours , à mon rythme sur ton fichier Lol
Petite question : dois tu pouvoir imprimer qu'une seule Étiquette
ou alors toujours l'ensemble ?
Bonne Journée
Jean amrie

Bonjour,
je les imprime tous a tous les deux je recommence cette opération.
s'il y a un loupé sur une coquilles sur une étiquettes, ce serait un plus de pouvoir en sélectionner 2 ou 3 pour refaire un mailling.
merci beaucoup
 

fredobogoss

XLDnaute Junior
Bonjour.
Si je comprends bien les infos Age et Statut sont uniquement ajoutées par vous ?
Je joins mon travail, corrigé selon ces information.
Je pense que vous ne trouverez pas plus souple ni pratique pour la mise à jour.
Merci de faire vos observations

Bonjour Dranreb,
oui je rajoute l'age et le statut a la main
j'ai essayé le le fichier que tu as posté, cela me mentionne des erreurs de compilations.
pour le publipostage oui, ce sont les étiquettes prédéfinies Avery en 3 colonnes et 10 lignes.
ok j'attend ta MAJ pour le mailling. et peux tu m'expliquer comment fonctionne ta macro en cliquant sur bouton ca m'ouvre la page du code

merci
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 325
Membres
103 179
dernier inscrit
BERSEB50