[OK]Besoin d'aide
Modérateur : Modérateurs
[OK]Besoin d'aide
Bonjour,
Une question, mais je sais pas si c'est possible. Je voudrais à l'aide d'une macro pouvoir ouvrir une boite de dialogue qui me permette de selectionner un ou plusieurs fichiers dans un repertoires, ces fichiers sont
identiques et se nommemt par un numéro différent (ex: 1015.xls/1016.xls/1017.xls etc..)une fois selectionner les fichiers voulus je voudrais pouvoir calculer la somme du contenu d'une cellule par exemple "g12" de chacun de ces documents pour obtenir un total.
Dites moi ce que vous en pensez,
Merci d'avance
Cordialement,
Boa73
.
Une question, mais je sais pas si c'est possible. Je voudrais à l'aide d'une macro pouvoir ouvrir une boite de dialogue qui me permette de selectionner un ou plusieurs fichiers dans un repertoires, ces fichiers sont
identiques et se nommemt par un numéro différent (ex: 1015.xls/1016.xls/1017.xls etc..)une fois selectionner les fichiers voulus je voudrais pouvoir calculer la somme du contenu d'une cellule par exemple "g12" de chacun de ces documents pour obtenir un total.
Dites moi ce que vous en pensez,
Merci d'avance
Cordialement,
Boa73
.
Cordialement
<br>Boa73
<br>Boa73
-
- Membre
- Messages : 80
- Enregistré le : 02 juin 2005, 23:00:00
- Localisation : K. Plage (3°cocotier à gauche) ;-)
salut,
oui, c'est possible, mais long, très long à expliquer
1° comment créer une boîte de dialogue ???????,
alors ==> alt + f11 ==> clic droit sur feuil1 ==> insertion userform
là : placer les boutons de commande , les nommer (==>caption) par 1015 ....1016 ....
double-clic dessus et pour activer le xls en question y insérer ceci :
Workbooks.Open FileName:="C:LeDossier1015.xls" pour le CommandButton1 .....;; etc.
2° essayer d'utiliser l'enregistreur de macros pour comprendre et assembler
@+
oui, c'est possible, mais long, très long à expliquer
1° comment créer une boîte de dialogue ???????,
alors ==> alt + f11 ==> clic droit sur feuil1 ==> insertion userform
là : placer les boutons de commande , les nommer (==>caption) par 1015 ....1016 ....
double-clic dessus et pour activer le xls en question y insérer ceci :
Workbooks.Open FileName:="C:LeDossier1015.xls" pour le CommandButton1 .....;; etc.
2° essayer d'utiliser l'enregistreur de macros pour comprendre et assembler
@+
Bonjour Boa73,
Tu n'as pas besoin de macro pour effectuer cette opération, mais juste d'une formule de calcul a mettre dans la cellule de ton choix(je suppose G12) sous la forme:
=SOMME([1015.xls]Feuil1!$G$12;[1016.xls]Feuil1!$G$12;[1017.xls]feuil1!$G$12)
en partant du principe ou ton onglet se nomme feuil1, sinon remplacer par le nom que tu lui donné (par exemple toto!).
Voila, dis moi si ca te va
@+
Tu n'as pas besoin de macro pour effectuer cette opération, mais juste d'une formule de calcul a mettre dans la cellule de ton choix(je suppose G12) sous la forme:
=SOMME([1015.xls]Feuil1!$G$12;[1016.xls]Feuil1!$G$12;[1017.xls]feuil1!$G$12)
en partant du principe ou ton onglet se nomme feuil1, sinon remplacer par le nom que tu lui donné (par exemple toto!).
Voila, dis moi si ca te va
@+
Marsu
Donnez moi vos besoins je vous expliquerais comment vous en passer
Donnez moi vos besoins je vous expliquerais comment vous en passer
-
- Membre
- Messages : 80
- Enregistré le : 02 juin 2005, 23:00:00
- Localisation : K. Plage (3°cocotier à gauche) ;-)
re,
si malgré tout tu veux te simplifier la tà¢che, au cas ou tu as beaucoup de requêtes à faire :
après avoir créé userform1 :
<IMG SRC="userimg/(730)excel_variable001.jpg" BORDER="0">
le code à mettre en double cliquant sur CommandButton1 :
Option Explicit
Private Sub CommandButton1_Click()
Dim <font color=red>a</font> As Variant
Dim <font color=green>b </font> As Variant
Dim<font color=blue> x </font> As Variant
Dim <font color=orange>t1</font> As Variant
Dim <font color=brown>t2</font> As Variant
Dim <font color=yellow>total </font> As Variant
<font color=red>a</font> = UserForm1.TextBox1.Value
<font color=green>b </font> = UserForm1.TextBox2.Value
<font color=blue> x </font> = UserForm1.TextBox3.Value
On Error GoTo dd
If <font color=red>a</font> = "" Then
<font color=orange>t1</font> = 0
GoTo bb
Else
ChDrive "C"
ChDir "C:+++"
Workbooks.Open <font color=red>a</font> & ".xls"
<font color=orange>t1</font> = ActiveWorkbook.Sheets("Feuil1").Range(<font color=blue> x </font> ).Value
ActiveWorkbook.Close
End If
bb:
If <font color=green>b </font> = "" Then
<font color=brown>t2</font> = 0
GoTo cc
Else
ChDrive "C"
ChDir "C:+++"
Workbooks.Open <font color=green>b </font> & ".xls"
<font color=brown>t2</font> = ActiveWorkbook.Sheets("Feuil1").Range(<font color=blue> x </font> ).Value
ActiveWorkbook.Close
End If
cc:
<font color=yellow>total </font> = <font color=orange>t1</font> + <font color=brown>t2</font>
MsgBox "Le total de votre requête est " & <font color=yellow>total </font>
UserForm1.Hide
Exit Sub
dd:
MsgBox "Une ou plusieurs saisies incorrecte(s)"
End Sub
<B>pour le bouton sortir :</B>
Private Sub CommandButton2_Click()
Unload Me
End Sub
<B>dans Feuil1, tu mets :</B>
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
UserForm1.Show
End Sub
dès que tu cliques sur une cellule quelconque , la boîte de dialogue apparaît
dans l'exemple, le répertoire est C:+++
les noms des classeurs dans les textbox 1 & 2
la requête de cellule (par exemple d18) dans le textbox 3
tu peux rajouter des textbox(s) en oubliant pas de déclarer les nouvelles variables (Dim c as ... ; Dim t3 as ...) (c= UserForm1.TextBox3.Value )
un classeur-exemple pour 3 requêtes est dispo. :
<a href="http://users.skynet.be/bk340569/userform.zip" target="_blank">http://users.skynet.be/bk340569/userform.zip</a>
<IMG SRC="userimg/(730)excel_variable002.jpg" BORDER="0">
@+
si malgré tout tu veux te simplifier la tà¢che, au cas ou tu as beaucoup de requêtes à faire :
après avoir créé userform1 :
<IMG SRC="userimg/(730)excel_variable001.jpg" BORDER="0">
le code à mettre en double cliquant sur CommandButton1 :
Option Explicit
Private Sub CommandButton1_Click()
Dim <font color=red>a</font> As Variant
Dim <font color=green>b </font> As Variant
Dim<font color=blue> x </font> As Variant
Dim <font color=orange>t1</font> As Variant
Dim <font color=brown>t2</font> As Variant
Dim <font color=yellow>total </font> As Variant
<font color=red>a</font> = UserForm1.TextBox1.Value
<font color=green>b </font> = UserForm1.TextBox2.Value
<font color=blue> x </font> = UserForm1.TextBox3.Value
On Error GoTo dd
If <font color=red>a</font> = "" Then
<font color=orange>t1</font> = 0
GoTo bb
Else
ChDrive "C"
ChDir "C:+++"
Workbooks.Open <font color=red>a</font> & ".xls"
<font color=orange>t1</font> = ActiveWorkbook.Sheets("Feuil1").Range(<font color=blue> x </font> ).Value
ActiveWorkbook.Close
End If
bb:
If <font color=green>b </font> = "" Then
<font color=brown>t2</font> = 0
GoTo cc
Else
ChDrive "C"
ChDir "C:+++"
Workbooks.Open <font color=green>b </font> & ".xls"
<font color=brown>t2</font> = ActiveWorkbook.Sheets("Feuil1").Range(<font color=blue> x </font> ).Value
ActiveWorkbook.Close
End If
cc:
<font color=yellow>total </font> = <font color=orange>t1</font> + <font color=brown>t2</font>
MsgBox "Le total de votre requête est " & <font color=yellow>total </font>
UserForm1.Hide
Exit Sub
dd:
MsgBox "Une ou plusieurs saisies incorrecte(s)"
End Sub
<B>pour le bouton sortir :</B>
Private Sub CommandButton2_Click()
Unload Me
End Sub
<B>dans Feuil1, tu mets :</B>
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
UserForm1.Show
End Sub
dès que tu cliques sur une cellule quelconque , la boîte de dialogue apparaît
dans l'exemple, le répertoire est C:+++
les noms des classeurs dans les textbox 1 & 2
la requête de cellule (par exemple d18) dans le textbox 3
tu peux rajouter des textbox(s) en oubliant pas de déclarer les nouvelles variables (Dim c as ... ; Dim t3 as ...) (c= UserForm1.TextBox3.Value )
un classeur-exemple pour 3 requêtes est dispo. :
<a href="http://users.skynet.be/bk340569/userform.zip" target="_blank">http://users.skynet.be/bk340569/userform.zip</a>
<IMG SRC="userimg/(730)excel_variable002.jpg" BORDER="0">
@+
<IMG SRC="/images/smiles/wink_smile46.gif"> <IMG SRC="/images/smiles/wink_smile46.gif"> <IMG SRC="/images/smiles/wink_smile46.gif">
Merci à tous pour toutes ces explications,
Je viens de les avoir ce matin je vais voir tout à§a et essayer, je vous dirais ces jours si tout fonctionne.
Merci encore,
Boa73
Merci à tous pour toutes ces explications,
Je viens de les avoir ce matin je vais voir tout à§a et essayer, je vous dirais ces jours si tout fonctionne.
Merci encore,
Boa73
Cordialement
<br>Boa73
<br>Boa73
Philou,
Je me suis servi de tes conseils et effectivement à§a fonctionne merci bien. Mais j'ai un petit problème selon les moments j'ai jusqu'a 15 ou 20 fichiers a selectionner et pour creer toute ses requetes c'est un peu lourd. C'est lourd aussi a renseigner en sachant que si j'ai par exemple 16 fichiers a consulter dans la cellule i44 pour avoir le total ces fichiers se nomeront par exemple 1015 - 1016 - 1017 - 1018.xls etc..
Donc ils se suivent toujours.Pourrait-on avoir une solution pour avoir une requete qui prenne en compte tous les fichiers de 1015 à 1030 avec une boite de dialogue qui demande uniquement le premier et le dernier fichier à l'utilisateur et qui calcule la valeur de la cellule i44 de tous les fichiers (ces deux là et ceux se trouvant entre ces deux nombres)
Merci de ta réponse,
Cordialement
Boa73
Je me suis servi de tes conseils et effectivement à§a fonctionne merci bien. Mais j'ai un petit problème selon les moments j'ai jusqu'a 15 ou 20 fichiers a selectionner et pour creer toute ses requetes c'est un peu lourd. C'est lourd aussi a renseigner en sachant que si j'ai par exemple 16 fichiers a consulter dans la cellule i44 pour avoir le total ces fichiers se nomeront par exemple 1015 - 1016 - 1017 - 1018.xls etc..
Donc ils se suivent toujours.Pourrait-on avoir une solution pour avoir une requete qui prenne en compte tous les fichiers de 1015 à 1030 avec une boite de dialogue qui demande uniquement le premier et le dernier fichier à l'utilisateur et qui calcule la valeur de la cellule i44 de tous les fichiers (ces deux là et ceux se trouvant entre ces deux nombres)
Merci de ta réponse,
Cordialement
Boa73
-
- Membre
- Messages : 80
- Enregistré le : 02 juin 2005, 23:00:00
- Localisation : K. Plage (3°cocotier à gauche) ;-)
re,
tu gardes le userform1 du premier exemple (3 TextBox)
et tu colles ceci pour le CommandButton1 :
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim a As Variant
Dim b As Variant
Dim x As Variant
Dim y As Variant
Dim total As Variant
Dim t1 As Variant
a = UserForm1.TextBox1.Value
b = UserForm1.TextBox2.Value
y = UserForm1.TextBox3.Value
On Error GoTo erreur
For x = a To b
ChDrive "C"
ChDir "C:+++"
Workbooks.Open x & ".xls"
t1 = ActiveWorkbook.Sheets("Feuil1").Range(y).Value
total = total + t1
ActiveWorkbook.Close
Next
MsgBox total
UserForm1.Hide
Application.ScreenUpdating = True
Exit Sub
erreur:
MsgBox "Une ou des entrée(s) invalide(s)"
End Sub
voilà !
un classeur-exemple pour x requêtes est disponible :
<a href="http://users.skynet.be/bk340569/cell.zip" target="_blank">http://users.skynet.be/bk340569/cell.zip</a>
@+
tu gardes le userform1 du premier exemple (3 TextBox)
et tu colles ceci pour le CommandButton1 :
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim a As Variant
Dim b As Variant
Dim x As Variant
Dim y As Variant
Dim total As Variant
Dim t1 As Variant
a = UserForm1.TextBox1.Value
b = UserForm1.TextBox2.Value
y = UserForm1.TextBox3.Value
On Error GoTo erreur
For x = a To b
ChDrive "C"
ChDir "C:+++"
Workbooks.Open x & ".xls"
t1 = ActiveWorkbook.Sheets("Feuil1").Range(y).Value
total = total + t1
ActiveWorkbook.Close
Next
MsgBox total
UserForm1.Hide
Application.ScreenUpdating = True
Exit Sub
erreur:
MsgBox "Une ou des entrée(s) invalide(s)"
End Sub
voilà !
un classeur-exemple pour x requêtes est disponible :
<a href="http://users.skynet.be/bk340569/cell.zip" target="_blank">http://users.skynet.be/bk340569/cell.zip</a>
@+
Salut Philou,
J'ai tout installé dans mon programme et à§a fonctionne sans problème merci.
Par contre une dernière question, dans l'absolu il est possible que j'ai un fichier qui manque dans une suite par exemple :
1070.xls - 1071.xls - 1072.xls - 1073.xls - 1075.xls - 1076.xls
Dans cette exemple le 1074 est inexistant et à§a renvoit une erreur et ne calcule pas le reste, y a-t- il une solution pour remedier à cela et que dans ces cas là il prenne tous les exitant qui se trouvent entre les deux qu'on lui renseigne dans les TexBox 1 et 2 les deux renseignés compris??
Merci si tu sais, c'est mon dernier soucis
Cordialement,
Boa73
J'ai tout installé dans mon programme et à§a fonctionne sans problème merci.
Par contre une dernière question, dans l'absolu il est possible que j'ai un fichier qui manque dans une suite par exemple :
1070.xls - 1071.xls - 1072.xls - 1073.xls - 1075.xls - 1076.xls
Dans cette exemple le 1074 est inexistant et à§a renvoit une erreur et ne calcule pas le reste, y a-t- il une solution pour remedier à cela et que dans ces cas là il prenne tous les exitant qui se trouvent entre les deux qu'on lui renseigne dans les TexBox 1 et 2 les deux renseignés compris??
Merci si tu sais, c'est mon dernier soucis
Cordialement,
Boa73
-
- Membre
- Messages : 80
- Enregistré le : 02 juin 2005, 23:00:00
- Localisation : K. Plage (3°cocotier à gauche) ;-)
re,
ben, oui, t'as raison, à§a coince là !!!!!!!!!!!!
soit , tu mets un classeur vide du N° manquant,
soit, tu mets ceci en attendant :
On Error Resume Next
Application.Calculation = xlManual
For x = a To b
ChDrive "C"
ChDir "C:+++"
Workbooks.Open x & ".xls"
t1 = ActiveWorkbook.Sheets("Feuil1").Range(y).Value
total = total + t1
ActiveWorkbook.Close
Next
Application.Calculation = xlAutomatic
et quand il te demande "voulez vous enregistrer les modifs ..." tu cliques sur "annuler"
en attendant, je ne sais pas pourquoi il sort direct de là
Va falloir demander à§à à des pros.
@+
ben, oui, t'as raison, à§a coince là !!!!!!!!!!!!
soit , tu mets un classeur vide du N° manquant,
soit, tu mets ceci en attendant :
On Error Resume Next
Application.Calculation = xlManual
For x = a To b
ChDrive "C"
ChDir "C:+++"
Workbooks.Open x & ".xls"
t1 = ActiveWorkbook.Sheets("Feuil1").Range(y).Value
total = total + t1
ActiveWorkbook.Close
Next
Application.Calculation = xlAutomatic
et quand il te demande "voulez vous enregistrer les modifs ..." tu cliques sur "annuler"
en attendant, je ne sais pas pourquoi il sort direct de là
Va falloir demander à§à à des pros.
@+
Philou,
Je vais voir pour essayer de trouver une autre soluce car la derniere était pas trop mal juste a faire annuler, mais par contre elle est fausse car si un fichier n'existe pas au lieu de compter la valeur de la cellule à zero, il compte comme celle d'apres ou celle d'avant je sais plus, mais le resultat est donc faut.
Allez @+ et merci quand meme de ton aide
Boa73
Salut Philou,
Si à§a t'interresse ou un autre j'ai trouvé le code qui fonctionne sans problème :
Option Explicit
Private Sub CommandButton1_Click()
Dim a As Variant, b As Variant, x As Variant
Dim total As Variant, t1 As Variant
Dim Chemin As String, Fichier As String
Chemin = "C:Mes documentsLogiciel GestionDossiers Devis BL Factures"
a = UserForm1.TextBox1.Value
b = UserForm1.TextBox2.Value
On Error GoTo erreur
ChDrive "C"
ChDir "C:Mes documentsLogiciel GestionDossiers Devis BL Factures"
Application.ScreenUpdating = False
For x = a To b
Fichier = x & ".xls"
If Dir(Chemin & "" & Fichier) <> "" Then
Workbooks.Open Fichier
t1 = ActiveWorkbook.Sheets("Facture").Range("i44").Value
total = total + t1
ActiveWorkbook.Close False
End If
Next
MsgBox "Le total HT de vos Factures est de " & total & " Euros"
UserForm1.Hide
Application.ScreenUpdating = True
ActiveSheet.Range("F18").Select
ActiveSheet.Range("F12").Select
Exit Sub
erreur:
MsgBox "Une ou des entrée(s) invalide(s)"
End Sub
Si à§a t'interresse ou un autre j'ai trouvé le code qui fonctionne sans problème :
Option Explicit
Private Sub CommandButton1_Click()
Dim a As Variant, b As Variant, x As Variant
Dim total As Variant, t1 As Variant
Dim Chemin As String, Fichier As String
Chemin = "C:Mes documentsLogiciel GestionDossiers Devis BL Factures"
a = UserForm1.TextBox1.Value
b = UserForm1.TextBox2.Value
On Error GoTo erreur
ChDrive "C"
ChDir "C:Mes documentsLogiciel GestionDossiers Devis BL Factures"
Application.ScreenUpdating = False
For x = a To b
Fichier = x & ".xls"
If Dir(Chemin & "" & Fichier) <> "" Then
Workbooks.Open Fichier
t1 = ActiveWorkbook.Sheets("Facture").Range("i44").Value
total = total + t1
ActiveWorkbook.Close False
End If
Next
MsgBox "Le total HT de vos Factures est de " & total & " Euros"
UserForm1.Hide
Application.ScreenUpdating = True
ActiveSheet.Range("F18").Select
ActiveSheet.Range("F12").Select
Exit Sub
erreur:
MsgBox "Une ou des entrée(s) invalide(s)"
End Sub
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités