[OK]Besoin d'aide

Discussions et dépannage concernant Excel (Toutes versions).

Modérateur : Modérateurs

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

[OK]Besoin d'aide

Message par boa73 » 19 févr. 2003, 23:29:00

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
.
Cordialement
<br>Boa73

philou
Membre
Membre
Messages : 80
Enregistré le : 02 juin 2005, 23:00:00
Localisation : K. Plage (3°cocotier à gauche) ;-)

Message par philou » 20 févr. 2003, 00:16:00

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

@+



:-)

MARSU069
Membre
Membre
Messages : 36
Enregistré le : 02 juin 2005, 23:00:00
Localisation : Lyon

Message par MARSU069 » 20 févr. 2003, 00:21:00

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
@+
;) Marsu
Donnez moi vos besoins je vous expliquerais comment vous en passer :-?
Image

philou
Membre
Membre
Messages : 80
Enregistré le : 02 juin 2005, 23:00:00
Localisation : K. Plage (3°cocotier à gauche) ;-)

Message par philou » 20 févr. 2003, 17:10:00

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">

@+
:-)

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

Message par boa73 » 22 févr. 2003, 10:42:00

<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
Cordialement
<br>Boa73

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

Message par boa73 » 22 févr. 2003, 16:18:00

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

philou
Membre
Membre
Messages : 80
Enregistré le : 02 juin 2005, 23:00:00
Localisation : K. Plage (3°cocotier à gauche) ;-)

Message par philou » 22 févr. 2003, 20:54:00

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>


@+

:-)

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

Message par boa73 » 24 févr. 2003, 10:40:00



Merci bien Philou,

C'est exactement ce que je voulais faire.
Je mets tout au point pour mon prog et c'est OK
Merci encore,

Boa73

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

Message par boa73 » 24 févr. 2003, 17:11:00

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

philou
Membre
Membre
Messages : 80
Enregistré le : 02 juin 2005, 23:00:00
Localisation : K. Plage (3°cocotier à gauche) ;-)

Message par philou » 24 févr. 2003, 17:58:00

Salut,

oui, plutà´t que de mettre le message d'erreur avec :

On Error GoTo erreur

tu mets

On Error Resume Next

à§a devrait fonctionner !

@+

:-)

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

Message par boa73 » 24 févr. 2003, 18:11:00

Merci de ta réponse mais il doit manquer quelque chose car à§a ne fonctionne pas à§a me sort carrement du classeur


Boa73

philou
Membre
Membre
Messages : 80
Enregistré le : 02 juin 2005, 23:00:00
Localisation : K. Plage (3°cocotier à gauche) ;-)

Message par philou » 24 févr. 2003, 20:03:00

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.

@+
:-)

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

Message par boa73 » 24 févr. 2003, 22:53:00

Merci bien Philou,
Je vais essayer comme à§a et voir si je peux trouver une autre soluce, merci encore pour tout,
Boa73

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

Message par boa73 » 25 févr. 2003, 02:30:00



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

boa73
Membre
Membre
Messages : 25
Enregistré le : 02 juin 2005, 23:00:00

Message par boa73 » 26 févr. 2003, 10:26:00

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

Répondre

Retourner vers « Excel »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités