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 :

Problème d'écriture vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut Problème d'écriture vba
    Bonjour,

    J'ai un problème d'écriture.
    Voilà j'ai une feuille "feuil1" et un userform "form1"

    Mes utilisateur afin de préserver mes classseurs n'ont
    Accès qu'au user form

    J'aimerais que les données ( environ 250 cellules )s'affichent dans les
    250 labels que j'ai mis sur les userform

    Mon code est lourd du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Privatsub_form_open()
     
    Form1.label1.caption = feuil1.range("A1").value
    Idem pour la cellule 2 etc etc
    Comment puis je écrire sachant que mes cellules vont de A1 à J25
    Mes labels de 1 à 250
    Et le remplissage doit se faire horizontalement genre
    A1 pour label 1 B1 pour label2 J1 pour label10
    A2 pour label 11 etc

    Merci de votre précieuse aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    hello,

    une double boucle :
    - i pour les colonnes
    - j pour les lignes

    optionnellement, tu passes par un compteur pour identifier le label

    le label etant un control, tu peux passer par la famille Controls() de ton formulaire

    je te laisse chercher avec ces pistes
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut Whoaou ça arrache
    Whaou ça arrache ça donne envi de savoir le faire mais je pense que je vais me ronger plus d'un ongle dessus mais je vais essayer

    Merci en tout cas

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Deux choix, soit :
    En bouclant sur chaque cellule de la plage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim RngCel As Range
    Dim IntI As Integer
     
    For Each RngCel In Range("A1:J10")
        IntI = IntI + 1
        Forms1.Controls("Label" & IntI).Caption = RngCel.Value
    Next
    Ou en utilisant une variable tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Valeurs()
    Dim IntLig As Integer, IntCol As Integer, Cpt As Integer
    Valeurs = Application.Transpose(Range("A1:J10").Value)
    For IntCol = 1 To 10
        For IntLig = 1 To 10
            Cpt = Cpt + 1
            Forms1.Controls("Label" & Cpt).Caption = Valeurs(IntCol, IntLig)
        Next IntLig
    Next IntCol
    remarque : La solution avec variable tableau n'est donnée qu'à titre d'exemple est ne doit être utilisée que pour un grand nombre de valeurs...

    EDIT : bonjour à tous, désolé je n'ai pas vu les réponses précédentes...
    Bonne journée

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut
    Merci pijaku
    ton code marche super ==> celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim RngCel As RangeDim IntI As Integer For Each RngCel In Range("A1:J10")    IntI = IntI + 1    Forms1.Controls("Label" & IntI).Caption = RngCel.ValueNext
    par contre dis moi j'ai essayé de le bidouiller mais sans succes
    j'aimerais maintenant

    exporter de mon forms1 label 1 a 10
    vers la feuil1 range a1:a10

    peux tu maider

    en gros c'est la meme chose mais du userform vers le classeur

    merci d'avance

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Alors plutôt que de te le faire et que tu recopies sans comprendre, je vais commenter mon code initial pour que :
    1- tu le comprennes et l'assimiles,
    2- tu puisses l'adapter à d'autres situations.

    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
     
    'Déclaration des variables
        'RngCel est déclaré comme un objet Range
    Dim RngCel As Range
        'IntI comme un nombre Entier
    Dim IntI As Integer
     
    'Pour chaque objet de type Range dans la plage de A1 à J10
        'la boucle va boucler sur toutes les cellules, de A1 à J1 puis de A2 à J2
        'puis de A3 à J3 etc... Jusqu'à J10
        'on peux aisément adapter la plage de cellules non?
    For Each RngCel In Range("A1:J10")
        'IntI nous permet d'incrémenter le n° du label
            '1er passage de boucle IntI = 0 , IntI = IntI + 1 donc IntI = 1
            '2ème passage : IntI = IntI + 1 donc IntI = 2 etc...
        IntI = IntI + 1
        'on inscrit, dans le caption du label, le contenu de la cellule
        'pour réaliser l'inverse, inverser les deux membres de cette égalité :
        'A=B ==> B=A
        Forms1.Controls("Label" & IntI).Caption = RngCel.Value
    Next

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut super tes explications
    pijaku

    super tes explications merci beaucoup
    en fait je pensais qu'il falait declarer les labels de la meme facon que les range
    mais grace a tes explications j'ai compri et reussi

    merci beaucoup

    A+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/02/2010, 16h03
  2. [VBA]Excel: problème d'écriture
    Par imeys dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/01/2006, 13h48
  3. Problème d'écriture dans un tableau
    Par Hokagge dans le forum MFC
    Réponses: 46
    Dernier message: 08/07/2005, 16h47
  4. problème d'écriture dans la BD
    Par billy_ze_kid dans le forum ASP
    Réponses: 6
    Dernier message: 12/06/2005, 20h30
  5. [communication série] problème lecture/écriture
    Par davinout dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 01/06/2005, 13h14

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