Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 08h50   #1
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 94
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 94
Points : 14
Points : 14
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 :
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
UDSP50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 09h39   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
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
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 09h42   #3
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 94
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 94
Points : 14
Points : 14
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
UDSP50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 09h43   #4
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Bonjour,
Deux choix, soit :
En bouclant sur chaque cellule de la plage :
Code :
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 :
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
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h00   #5
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 94
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 94
Points : 14
Points : 14
Merci pijaku
ton code marche super ==> celui-ci

Code :
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
UDSP50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h17   #6
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
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 :
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
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 18h32   #7
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 94
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 94
Points : 14
Points : 14
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+
UDSP50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h28.


 
 
 
 
Partenaires

Hébergement Web