IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer les données EXCEL sur FORMULAIRE [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut Récupérer les données EXCEL sur FORMULAIRE
    Bonjour,

    j'ai créée un formulaire, j'ai un tableau Excel avec des tarifs.

    je voudrais que les utilisateurs puissent :

    en cochant une case option que le tarif s'affiche automatiquement (tableau excel) qu'en mettant une date, mon formulaire affiche le bon tarif, en mettant le pays qu'il affiche la TVA etc...

    Cela est-il possible en faisant du VBA que je récupère mes données EXCEL sur mon formulaire ?

    Merci d'avance pour votre contribution, je sais le faire de WORD à EXCEL mais pas d'EXCEL sur FORMULAIRE.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Pour ma part, votre demande est vague :
    - parlez-vous d'un UserForm ?
    - s'agit-il d'une seule feuille "Tarifs" ou de plusieurs feuilles "Tarifs" ?
    - quelle est la structure de la feuille (ou des feuilles) "Tarifs" (où sont les pays, la TVA, etc) ?

    Si vous pouviez être plus explicite, peut être obtiendriez-vous des réponses.

    Bonne journée.

  3. #3
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut tableur EXCEL vers Formulaire EXCEL
    Bonjour,

    merci de votre réponse, je vais essayer d'être plus claire.

    Il s'agit d'un userform en effet, j'ai un tableau excel avec mes tarifs, et j'ai un userform.

    Je voudrais que les tarifs que j'ai dans mon tableau EXCEL, arrive sur mon Userform.

    Mon adhérent doit saisir le nom de sa société et en fonction de la date d'adhésion et de son CA, il puisse calculer le tarif de son abonnement.

    Merci de me dire si c'est possible en VBA ou autres....

    désolée de ne pas être plus claire, car je n'ai pas forcément le même language.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Merci de me dire si c'est possible en VBA
    C'est possible.

    Pour mettre le pied à l'étrier :
    1) dans une feuille, mettez des données dans les cellules de la plage A1:D7
    2) créez un UserForm
    3) y mettre un contrôle ListBox (Zone de liste)
    4) modifiez les propiétés suivantes
    - ColumnCount 4
    - RowSource a1:d7

    Lancez le UserForm.
    Les données de la feuille vont se retrouver dans la ListBox du UserForm.

  5. #5
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    bonjour,

    en fait dans mon Userform, j'ai 2 boutons commandes, je préfèrerais du code en VBA.

    Votre solution ne me convient pas, trop simpliste et pas assez fiable pour ce que je veux faire.

    J'ai des boutons d'option à côté d'une tranche de CA sur mon Userform :
    ex :
    Supérieur à 125 KF j'ai plusieurs tarifs comme çà
    dans mon Userform :
    DATE : quand on met une date, le tarif change en fonction du mois de l'année - 1er trimestre, 2ème trim. etc j'ai un droit d'entrée et une cotisation annuelle, un bouton valider et un bouton annuler
    sur EXCEL :

    mes données se trouve de la colonne A1 à K7 avec CA tarifs et remises en fonction du trimestre
    Je vous remercie de votre contribution, désolée d'être si débutante...

    Bonjour,

    je vous envoie mon userform pour faire plus simple, je pense que mon language n'est pas clair.

    Merci de me donner votre avis.

    En fait, je voudrais que mes champs dans mon Userform soient remplis en fonction de mon tableau EXCEL.

    Merci encore, car je sais, que je ne suis pas simple...
    Fichiers attachés Fichiers attachés

  6. #6
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut récupérer données EXCEL sur FORMULAIRE USERFORM
    Bonjour,

    j'ai un petit souci, pouvez-vous m'aider SVP

    J'ai un message d'erreur qui me demande un with end ?

    je ne comprends pas.

    Merci de me dire comment faire pour qu'il aille chercher la bonne colonne en fonction du mois de l'année !

    je n'y arrive pas.

    désolée mais je suis une vraie débutante.

    je n'utilise que rarement le code VBA, et là j'en ai besoin.

    pour aider mes petits adhérents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private Sub OK_Click()
    'feuille contenant la valeur à chercher
    With Sheets("tarifs HT")
    'de la ligne 2 à la dernière ligne utilisée de la colonne C
    For i = 2 To .Cells(Rows.Count, 3).End(xlUp).Row
    'recherche de la ligne en colonne C qui correspond à la sélection du listbox1
    If .Cells(i, 3).Text = Me.tarifs Then
    'si oui tarifs = colonne suivante même ligne
    droitentree = .Cells(i, 3).Text
    cotisationan = .Cells(i, 4).Text
     
    Exit For
    End If
    Next
    End Sub
     
     
    Private Sub UserForm_Initialize()
        Datel = Format(Date, "dd/mm/yyyy")
    End Sub

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    J'ai un message d'erreur qui me demande un with end ?
    Voir le code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub OK_Click()
    'feuille contenant la valeur à chercher
    With Sheets("tarifs HT")  '/// un With demande obligatoirement un End With
      'de la ligne 2 à la dernière ligne utilisée de la colonne C
      For i = 2 To .Cells(Rows.Count, 3).End(xlUp).Row
        'recherche de la ligne en colonne C qui correspond à la sélection du listbox1
        If .Cells(i, 3) = Me.tarifs Then '/// c'est .Value (on peut l'ommetre car c'est la propriété par défaut)
          'si oui tarifs = colonne suivante même ligne
          droitentree = .Cells(i, 3)
          cotisationan = .Cells(i, 4)
          Exit For
        End If
      Next i
    End With    '///
    End Sub
    *****************
    Votre solution ne me convient pas, trop simpliste et pas assez fiable pour ce que je veux faire.
    Ce n'était pas une solution mais une idication pour mettre le pied à l'étrier.
    *****************
    je vous envoie mon userform pour faire plus simple
    Le classeur a été envoyé sous extension .xlsx
    De ce fait, le code des macros, le UserForm et son code ont disparu.
    Zippez le classeur (.zip) ou enregistrez le au format 2003 (.xls) pour qu'il soit transmis avec tout son code et ses objets.

  8. #8
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut récupérer données EXCEL sur FORMULAIRE USERFORM
    bonjour, merci pour votre réponse.

    j'ai de nouveau un souci, mon Userform ne s'incrémente pas ?

    Je pense que j'oublie quelque chose, mais quoi

    Je vous renvoie mon Userform avec code, je voudrais que en fonction de la date du jour, il aille chercher le bon tarif qui se trouve sur mon tableau.


    j'ai du mal, débutante, je suis.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Vous n'étiez pas sur la bonne colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Cells(i, 1) = Me.tarifs Then ET NON PAS If .Cells(i, 3) = Me.tarifs Then
    ***************

    La piste à suivre.

    Il faut changer la structure de votre feuille pour indiquer les bornes des périodes :
    1) insérer une ligne supplémentaire pour obtenir une nouvelle ligne 2
    2) entrer une date de début de période en ligne 1 (en format Date)
    3) entrer une date de fin de période en ligne 2 (en format Date)

    Le code modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub CANCEL_Click()
    Unload Me
    End Sub
     
    Private Sub OK_Click()
    'feuille contenant la valeur à chercher
    With Sheets("tarifs HT")
      'de la ligne 2 à la dernière ligne utilisée de la colonne C
      For i = 3 To .Cells(Rows.Count, 3).End(xlUp).Row
        'recherche de la ligne en colonne A qui correspond à la sélection de la ComboBox
        If .Cells(i, 1) = Me.tarifs Then
          'si oui tarifs = colonne suivante même ligne
          droitentree = .Cells(i, 3)
          'de la colonne A à la dernière colonne de la région courante (on balaie la 1ère ligne à la recherche d'une date)
          For j = 1 To .[a1].CurrentRegion.Columns.Count
            'par défaut, on prend la cotisation colonne 4 ("D")
            cotisationan = .Cells(i, 4)
            'mais si on trouve une date correspondante dans les autres colonnes on écrase la valeur par défaut
            If IsDate(.Cells(1, j)) Then
              'recherche du tarif selon la date
              'on compare la date de début et la date de fin de la période
              If CDate(Me.Datel) >= .Cells(1, j) And CDate(Me.Datel) <= .Cells(2, j) Then
                cotisationan = .Cells(i, j)
                Exit For
              End If
            End If
          Next j
          Exit For
        End If
      Next i
    End With
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim S As Worksheet
    Dim R As Range
    Dim var As Variant
    '--- Monte les données dans la ComboBox ---
    Set S = Sheets("tarifs HT")
    Set R = S.Range("a3:a" & S.[a65536].End(xlUp).Row)
    var = R
    Me.tarifs.List = var
    '-------------
        Datel = Format(Date, "dd/mm/yyyy")
    End Sub
    Ci-joint, votre classeur modifié pour plus de facilité.

  10. #10
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut récupérer données EXCEL sur FORMULAIRE USERFORM
    bonjour, merci pour l'info, c'est sur si je me trompe de colonnes

    ceci dit,
    j'ai un message d'erreur "erreur 70" permission refusée ?
    j'ai bien repris votre code et changé mon tableau en créant 2 lignes comme dans votre modèle avec les formats dates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub CANCEL_Click()
    Unload Me
    End Sub
     
    Private Sub OK_Click()
    'feuille contenant la valeur à chercher
    With Sheets("tarifs HT")
    'de la ligne 2 à la dernière ligne utilisée de la colonne C
        For i = 3 To .Cells(Rows.Count, 3).End(xlUp).Row
    'recherche de la ligne en colonne A qui correspond à la sélection du combobox
        If .Cells(i, 1).Text = Me.tarifs Then
    'si oui tarifs = colonne suivante même ligne
        droitentree = .Cells(i, 3)
    'de la colonne A à la dernière colonne de la région courante (on balaie de la 1ère ligne à la recherche d'une date)
        For j = 1 To .[al].CurrentRegion.Columns.Count
    'par défaut, on prend la cotisation colonne 4("D")
        cotisationan = .Cells(i, 4)
    'mais si on trouve une date correspondante dans les autres colonnes on écrase la valeur par défaut
        If IsDate(.Cells(1, j)) Then
    'recherche du tarif selon la date
    'on compare la date de début et la date de fin de la période
        If CDate(Me.Datel) >= .Cells(1, j) And CDate(Me.Datel) <= .Cells(2, j) Then
            cotisationan = .Cells(i, j)
     
        Exit For
            End If
                End If
                    Next j
                     Exit For
                         End If
                             Next i
                                 End With
    End Sub
     
     
    Private Sub UserForm_Initialize()
    Dim s As Worksheet
    Dim r As Range
    Dim var As Variant
    'monte les données dans la combobox
    Set s = Sheets("tarifs HT")
    Set r = s.Range("a3:a" & s.[a65536].End(xlUp).Row)
    var = r
    Me.tarifs.List = var
     
        Datel = Format(Date, "dd/mm/yyyy")
    End Sub
    A moins que ce soit une protection de mon ordinateur ?

    merci de m'éclairer

    merci pour tout.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    j'ai bien repris votre code et changé mon tableau en créant 2 lignes comme dans votre modèle avec les formats dates.
    Je n'ai jamais dit de créer 2 lignes (voir ci-dessous)
    1) insérer une ligne supplémentaire pour obtenir une nouvelle ligne 2
    *****
    Pour quelle raison changez-vous l'indentation du code (les retraits) ?
    Tel que vous le présentez, il devient illisible
    Les indentations permettent de savoir quelles portions de code sont exécutées ou non en fonction des If, For, With.
    *****
    J'ai inclus votre code avec les modifications des indentations et cela ne fonctionne plus.
    Reprenez mon code tel quel (ou faites l'essai à partir de la pièce que j'ai jointe). Constatez-vous l'erreur 70 que vous décrivez ?
    Si elle persiste, je n'ai aucune idée de sa survenance.

  12. #12
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut récupérer données EXCEL sur FORMULAIRE USERFORM
    bonjour,

    merci beaucoup, en effet, je ne sais pourquoi cela marche avec ton exemple et pas avec le mien, donc je te remercie de ta patiente et de ta générosité.

    Je crois que c'est l'extension du fichier excel qui pose problème.

    En tout cas Bonne semaine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/01/2020, 14h21
  2. [FORM] récupérer les données d'un formulaire
    Par dragonfly dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 04/12/2007, 13h53
  3. Réponses: 14
    Dernier message: 15/05/2007, 14h51
  4. Récupérer les données d'un formulaire
    Par rimeh dans le forum Langage
    Réponses: 12
    Dernier message: 05/02/2007, 14h58
  5. récupérer les données d'un formulaire un peu spécial
    Par Jim_Nastiq dans le forum Interfaces Graphiques
    Réponses: 12
    Dernier message: 10/07/2006, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo