Ouvrir feuille à partir d'une textbox [Résolu/Fermé]

Signaler
-
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
-
Bonjour,

Je suis vraiment un débutant dans la programmation VBA + Excel et j'ai un problème

Je voudrais copier des cellules de la feuille "PV" dans un autre classeur "dimensi.1998 a 2008" contenant plusieurs feuilles. De plus des feuilles seront crées dans quelques temps c'est pourquoi je voudrais que les cellules se copient en fonction du nom de la feuille ecrite dans une textbox "h.value". J'ai commencé à faire une macro. Pour la copie des cellules il n'y a pas de problème mais pour la sélection de la feuille a partir de la textbox, je n'y arrive pas. Je vous joins ma macro. Il est possible qu'il y est d'autres erreurs (le debogueur indique le problème à la ligne "h.value =...
Un petit coup de main n'est pas de refus.


Dim wbk1 As Workbook
Dim wbk2 As Workbook


Set wbk1 = ThisWorkbook
Set wbk2 = Workbooks.Open(FileName:="dimensi.1998 a 2008")

h.Value = wbk1.Sheets("PV").UserForm1.TextBox2.Value
x.Value = wbk1.Sheets("h.value").Range("K6").Value
y.Value = 4
z.Value = x.Value + y.Value


wbk2.Sheets("h.value").Cells(z.Value, 1) = wbk1.Sheets("PV").Cells(6, 11)
wbk2.Sheets("h.value").Cells(z.Value, 1).Activate

4 réponses

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 122
bonjour,
Tu veux faire référence à quoi avec
h.Value =
x.Value =
y.Value =
z.Value
et si possible met ta macro en entier
A+
Salut a toi
h.value est pour moi la valeur de la textbox pour laquel l'utilisateur va ecrire dans le but de copier mes cellules sur la feuille portant le nom qu'il a ecrit
x.value est la valeur d'une cellule que l'utilisateur va taper (ceci nécessaire pour definir la ligne de la copie)
y.value est une valeur qui indique la copie des cellules sur la première ligne
z.value est la somme de la valeur de x et y pour designer la ligne de copie des cellules

pour resumer
h.value est le nom de la feuille
x.value est une ligne de départ pour copier coller les cellules
y.value correspond a une ligne pour copier coller les cellules
z.value est le chiffre issue de l'addition de la valeur de x et y
Ma macro est entière je n'ai que ça
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 122
ta macro n'est pas entière, met la à partir de Sub... jusque End Sub
parece que je ne vois pas où tu déclare tes h,x etc..
Quel est le nom du textbox

Pour le nom de la textbox c'est l'utilisateur qui va l'ecrire c'est pour ça que je ne mets pas une feuille de type wbk2.sheets("nom de la feuille")

voila la macro

Sub macro1()
Dim wbk1 As Workbook
Dim wbk2 As Workbook


Set wbk1 = ThisWorkbook
wbk1.UserForm1.TextBox2.Value = h.Value
Set wbk2 = Workbooks.Open(FileName:="dimensi.1998 a 2008")

x.Value = wbk1.Sheets("h.value").Range("K6").Value


y.Value = 4

z.Value = x.Value + y.Value


wbk2.Sheets("h.value").Cells(z.value, 1) = wbk1.Sheets("PV").Cells(6, 11)
wbk2.Sheets("h.value").Cells(z.value, 1).Activate

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.ShrinkToFit = False
.MergeCells = False
End With
Selection.Font.Bold = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With
With Selection.Font
.Name = "Times New Roman"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
Selection.Font.ColorIndex = 0

End Sub
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 122
Bon, il n'y a aucune déclaration concernant tes variables..
mais pour t'aiguillé il faut d'abors savoir le NOM DE LA TEXTBOX (pas ce qu'il y aurra dedant)
voir dans Propriétés >> Name = ? : C'est avec ce nom que tu peu travailler
Pour le nom de la textbox c'est l'utilisateur qui va l'ecrire Ca ce serra le nom du classeur ?
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 122
commence par déclarer tes variables
Sub macro1()
Dim wbk1 As Workbook
Dim wbk2 As Workbook
dim H as string
Dim X as integer, Y as integer, Z as integer

Pour avoir le nom de la feuille à employer qui se trouve dans ton textbox..
H=textBox1.text

Mais tu devras faire une détection d'erreur , le plus simple serrait de remplir un combobox
avec tout les noms de fichier. Pour ouvrir un fichier du DD il faut avoir le chemin + le nom (exact) + l'extention (.xls)
Ex C:\MonRepertoir\LeFichier.xls
Ce serrait plus simple si tu montrais ton classeur..
Tu le copie sur
https://www.cjoint.com/
et tu donne le lien dans le poste suivant.
salut a toi et merci pour ce debut de reponse

cependant je ne peux pas faire de combobox et lister toutes les feuilles car celle-ci seront crées l'année prochaine et je ne connais pas le nom quelles porteront. De ce fait la combobox est inutile a mon sens.

Le but recherché est que lorsque la feuille est crée par l'utilisateur, la macro puisse fonctionner correctement avec n'importe quel nom de feuille. Toutefois je pense que les feuilles s'appelleront "2009","2010", etc...

pour le nom de la textbox c'est tous simplement textbox2

Pour la publication des classeurs, je ne peux pas puisque c'est des documents appartenant a l'entreprise d'ou interdiction

Debut de modif de la macro: erreur 9 indice en dehors de la plage

Sub macro1()
Dim wbk1 As Workbook
Dim wbk2 As Workbook
Dim h As String
Dim x, y, z As Integer


Set wbk1 = ThisWorkbook
h = UserForm1.TextBox2.Text
Set wbk2 = Workbooks.Open(FileName:="dimensi.1998 a 2008")

x = wbk1.Sheets(h).Range("K6").Value


y = 4

z = x + y


wbk2.Sheets(h).Cells(z, 1) = wbk1.Sheets("PV").Cells(6, 11)
wbk2.Sheets(h).Cells(z, 1).Activate

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.ShrinkToFit = False
.MergeCells = False
End With
Selection.Font.Bold = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With
With Selection.Font
.Name = "Times New Roman"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
Selection.Font.ColorIndex = 0

End Sub
> Mister-t
C'est mon dernier post car mon problème est résolu

Merci a toi Lermite222 pour m'avoir mis sur la voie.
J'ai juste fais quelques manip sur la macro et hop le tour est joué

Pour ceux que cela interesse je laisse ma macro

Sub macro1()
Dim wbk1 As Workbook
Dim wbk2 As Workbook
Dim h As String
Dim x, y, z As Integer


Set wbk1 = ThisWorkbook
h = UserForm1.TextBox2.Text
x = Cells(6, 11).Value
Set wbk2 = Workbooks.Open(FileName:="dimensi.1998 a 2008")

y = 4
z = x + y


wbk2.Sheets(h).Cells(z, 1) = wbk1.Sheets("PV").Cells(6, 11)

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.ShrinkToFit = False
.MergeCells = False
End With
Selection.Font.Bold = False
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.IndentLevel = 0
.ShrinkToFit = False
.MergeCells = False
End With
With Selection.Font
.Name = "Times New Roman"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
Selection.Font.ColorIndex = 0

End Sub
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 122 > Mister-t
Tant mieux si ton problème est résolu mais tu a encore une petite faute,
Dim x, y, z As Integer 'C'est pas suffisant.. faut faire
Dim x as integer, y As Integer, z As Integer
A+