tonstre
Messages postés15Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 juillet 2010
-
7 févr. 2006 à 20:35
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
8 févr. 2006 à 20:27
Bonjour,
je souhaiterais créer une boite de dialogue à insérer dans un programme adin de pouvoir choisir le nombre d'enregistrements à copier dans un classeur et pouvoir ensuite les coller dans un autre classeur.
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 8 févr. 2006 à 12:10
Bonjour,
Si tu veux dire ouvrir des fichiers .xls pour y coller des
enregistrements, alors voici un code qui ouvre dans ton classeur actif,
les fichiers.xls que tu sélectionnes (Ctrl + Souris).Il te suffis alors
de les ouvrirs et de copier/coller tes enregistrements.
Si ce n'est pas celà, alors tiens toujours le code, il pourra te servir.
Sub OuvreClasseur()
Dim strFiles
Dim xlFiles
Dim blnOuvert As Boolean
Dim strMessage As String
Dim wbk As Workbook
Dim i As Integer
Dim j As Integer
'Affiche la boîte de dialogue Ouvrir
strFiles = Application.GetOpenFilename _
(FileFilter:="Fichiers Excel (*.xls),*.xls", _
Title:="Sélectionnez les fichiers à ouvrir", _
MultiSelect:=True)
'Teste si des fichiers ont été sélectionnés
If TypeName(strFiles) = "Variant()" Then
ReDim xlFiles(UBound(strFiles))
For i = 1 To UBound(strFiles)
'Contrôle l'exention du fichiers
If Right(strFiles(i), 3) = "xls" Then
'Teste si le fichier est déjà ouvert
blnOuvert = False
For Each wbk In Workbooks
If wbk.Path & "" & wbk.Name = strFiles(i) Then
blnOuvert = True
End If
Next wbk
'Stocke le nom de fichiers dans un tableau
If Not blnOuvert Then
j = j + 1
xlFiles(j) = strFiles(i)
strMessage = strMessage & strFiles(i) & vbCr
End If
End If
Next i
'Ouvre tous les fichiers Excel après confirmation
If j > 1 Then
strMessage = "Confirmez-vous l'ouverture des fichiers :" _
& vbCr & strMessage
If MsgBox(strMessage, vbYesNo + vbQuestion) = vbYes Then
For i = 1 To j
Workbooks.Open FileName:=xlFiles(i)
Next i
End If
End If
Else
MsgBox "Aucun fichier sélectionné"
End If
End Sub
jpleroisse
Si une réponse vous convient, cliquez réponse Acceptée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
tonstre
Messages postés15Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 juillet 2010 8 févr. 2006 à 19:05
Bonjour,
c'est vrai, je n'ai peut être pas été très explicite.
En fait, dans mon programme, selon certains critères,j'ai extrait certaines données dans une plage (allant de a2 à c500), sur une autre feuille. A ce stade de mon programme, je veux copier une partie de ces données ( de a2 à c30 par exemple) dans un autre classeur. Ce qui m'intéresserait c'est qu'une boite de dialogue s'ouvre et me demande "Combien d'enregistrements voulez-vous copier" et que dans cette boite de dialogue, du fait de lui dire "30" il me sélectionne la plage "a2:c30"pour ensuite pouvoir aller coller tout ça dans un autre classeur, ce que j'arrive à faire mais avec la totalité de la plage "A2:c500". De même si je ne veux copier que 24, entrer dans la boite de dialogue 24 et que seule la plage "a2:c24" soit sélectionnée.
Si je ne suis pas encore assez explicite, dites-moi ce qui manque dans l'exposé de mon problème.
Merci d'avance
tonstre
Messages postés15Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 juillet 2010 8 févr. 2006 à 19:05
Bonjour,
c'est vrai, je n'ai peut être pas été très explicite.
En fait, dans mon programme, selon certains critères,j'ai extrait certaines données dans une plage (allant de a2 à c500), sur une autre feuille. A ce stade de mon programme, je veux copier une partie de ces données ( de a2 à c30 par exemple) dans un autre classeur. Ce qui m'intéresserait c'est qu'une boite de dialogue s'ouvre et me demande "Combien d'enregistrements voulez-vous copier" et que dans cette boite de dialogue, du fait de lui dire "30" il me sélectionne la plage "a2:c30"pour ensuite pouvoir aller coller tout ça dans un autre classeur, ce que j'arrive à faire mais avec la totalité de la plage "A2:c500". De même si je ne veux copier que 24, entrer dans la boite de dialogue 24 et que seule la plage "a2:c24" soit sélectionnée.
Si je ne suis pas encore assez explicite, dites-moi ce qui manque dans l'exposé de mon problème.
Merci d'avance