Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
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 23/04/2007, 08h55   #1
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Par défaut [VBA-W] dupliquer une frame

Bonjour,
J'ai besoin d'aide pour copier une frame dans une userform.J'aimerais dupliquer une frame avec tous ces objets.Est_ce possible? et si oui, comment?
Merci beaucoup pour ces informations.
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 10h15   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
On a dit un frame dans un userform + 1 bouton derrière lequel, le code suivant :
Code :
1
2
3
4
5
Private Sub CommandButton1_Click()
Me.Frame1.SetFocus
Me.Copy
Me.Paste
End Sub
Tu dis
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 10h45   #3
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Ok, très bien, mais comment sont nommés les nouveaux frames?
J'aimerai les placer sur le userform et les afficher ou pas.
J'aurais besoins de leur noms?
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 10h55   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu veux tout alors ? Je ne sais pas... Essaie de le retrouver comme ça
Code :
1
2
3
4
5
6
7
8
9
10
Private Sub CommandButton1_Click()
Dim i
    For Each LeControle In Me.Controls
          i = i + 1
    Next
    Me.Frame1.SetFocus
    Me.Copy
    Me.Paste
    MsgBox Me.Controls(i).Name
End Sub
Je vois déjà venir ta question suivante et je m'inquiète
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 11h22   #5
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
C'est quoi ta variable "Lecontrole"?
Et pourquoi tu me parle de controle alors que moi je te parle de frames?
(ou bien c'est juste une histoire de noms à changer)
merci
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 11h27   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
J'ai omis de le déclarer :
Code :
Dim LeControle as control
Représente tous les contrôles contenus dans ton userform
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 11h54   #7
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Ta méthode ne marche que pour un seul copier coller de frame mais dès que je boucle ca ne marche plus???
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 12h06   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Si, elle fonctionne, mais si tu ne positionnes pas tes frames, elles sont superposées. Tu le vérifies pas le nom. Tu as d'abord frame2 puis frame3, incrémenté à chaque clic du bouton. Ou alors ta boucle a un pb
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 12h11   #9
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Ca pose un problème en quoi qu'ils soient superposés le Frames?
Car dans mon application,
-je veux creer plusieurs frame au meme endroit et les afficher quand je les appelerai.
Voila ce que j'aimerai faire.Merci pour ton aide.
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 12h12   #10
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Mets un frame dans un userform assez haut + 1 bouton et derrière le clic, mets ça
Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub CommandButton1_Click()
Dim i
    For Each LeControle In Me.Controls
          i = i + 1
    Next
    Me.Frame1.SetFocus
    Me.Copy
    Me.Paste
    Nom = Me.Controls(i).Name
    Me.Controls(i).Top = Me.Controls(i - 1).Top + Me.Controls(i - 1).Height
End Sub
Pour chaque clic tu auras un frame qui ira se mettre sous l'autre
A toi de gérer
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 13h36   #11
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
J'ai une erreur d'execution avec comme remarque "argument invalide".
sur cette ligne:
Code :
Nom = FormPilotage.Controls(k).Name

voila mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
For j = 1 To FormPilotage.TextBox_NbPara.Value
 
        For Each LeControle In FormPilotage.Controls
              k = k + 1
        Next
        FormPilotage.FraPara.Visible = True
        FormPilotage.FraPara.SetFocus
        FormPilotage.Copy
        FormPilotage.Paste
        FormPilotage.FraPara.Visible = False
        Nom = FormPilotage.Controls(k).Name
        FormPilotage.Controls(k).Top = FormPilotage.Controls(k - 1).Top + FormPilotage.Controls(k - 1).Height
 
    Next j
Ca ne marche pas des que la boucle fait plus d'un tour.
Pouvez-vous m'aider?

Merci d'avance.
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 14h09   #12
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Reûfléchis ! Si tu ne réinitialises pas k en fin de boucle For each, avant Next j, tes k continuent de s'incrémenter
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
For j = 1 To FormPilotage.TextBox_NbPara.Value
 
        For Each LeControle In FormPilotage.Controls
              k = k + 1
        Next
        FormPilotage.FraPara.Visible = True
        FormPilotage.FraPara.SetFocus
        FormPilotage.Copy
        FormPilotage.Paste
        FormPilotage.FraPara.Visible = False
        Nom = FormPilotage.Controls(k).Name
        FormPilotage.Controls(k).Top = FormPilotage.Controls(k - 1).Top + FormPilotage.Controls(k - 1).Height
        k= 0
    Next j
Pas tester mais tu ne vas pas tarder à le faire
Tu dis
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 14h20   #13
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Merci, étourderie.
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 15h43   #14
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
C'est résolu ? Alors un petit clic sur Résolu en bas de la fenêtre
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 16h11   #15
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Pas tout à fait, derniere chose,
comment récuperer le controle qui m'interesse (le frame)?

Ici on récupère le nom du controle:
Code :
Nom = FormPilotage.Controls(k).Name
copier le controle en gros.

J'ai essayé ca mais ca ne marche pas.

Code :
1
2
Dim Nframe As Controls
Set Nframe = FormPilotage.Controls(k)
voici le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
For j = 1 To FormPilotage.TextBox_NbPara.Value
 
        For Each LeControle In FormPilotage.Controls
              k = k + 1
        Next
        FormPilotage.FraPara.Visible = True
        FormPilotage.FraPara.SetFocus
        FormPilotage.Copy
        FormPilotage.Paste
        FormPilotage.FraPara.Visible = False
        Nom = FormPilotage.Controls(k).Name
        MsgBox Nom
        Set Nframe = FormPilotage.Controls(k)
        Nframe.Visible = False
        FormPilotage.Controls(k).Top = FormPilotage.Controls(k - 1).Top + FormPilotage.Controls(k - 1).Height
        k = 0
 
    Next j
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 16h25   #16
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Et si tu te contentes de mettre
Code :
FormPilotage.Controls(k).visible = false
Testé, ça fonctionne.
Par contre, va falloir que tu t'organises pour identifier chaque frame par son index
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 16h28   #17
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tiens, j'ai fait ça, aussi, en dehors de la boucle et ça fonctionne aussi.
Code :
    Me.Controls(2).Visible = False
épissaoci !
Code :
    Me.Controls("Frame2").Visible = False
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 16h32   #18
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Épijéféça
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub CommandButton1_Click()
Dim LesFrames As New Collection
Dim i
    For Each LeControle In Me.Controls
          i = i + 1
    Next
    Me.Frame1.SetFocus
    Me.Copy
    Me.Paste
    Nom = Me.Controls(i).Name
    LesFrames.Add Me.Controls(Nom)
    Me.Controls(i).Top = Me.Controls(i - 1).Top + Me.Controls(i - 1).Height
    'Me.Controls("Frame2").Visible = False
    LesFrames(1).Visible = False
End Sub
et ça marche aussi
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 17h10   #19
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Merci c'est bon.
dev81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 17h29   #20
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 116
Points : 25
Points : 25
Pas tout à fait finallement, Désolé je t'enbeter pas mal et je te remercie de toute les infos que tu me fournis.
Maintenant que j'ai copié mes frames et que je peux les afficher comme je veux.
Comment trouver les boutons sur mes frames?(qui change suivant les frames affichés.)
dev81 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 10h25.


 
 
 
 
Partenaires

Hébergement Web