Aide sur vb excel!Merci!

cs_bernoux Messages postés 2 Date d'inscription samedi 4 mai 2002 Statut Membre Dernière intervention 8 mai 2002 - 4 mai 2002 à 18:30
hebus16 Messages postés 80 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 2 octobre 2009 - 14 mai 2004 à 14:44
Salut!!

un grand help!

Je suis tout nouveau en programmation sur vb, je suis en stage et j'ai a faire entre autre un petit projet d'automatisation sur excel, j bien avance mais je bloque sur des points.. je te demande ton aide si tu veux bien.Merci d'avance

1- je voudrais ouvrir des fichiers a partir de plusieurs cellule, chaque valeur d'une cellule contient le nom du fichier. J'ai reussi , mais en faisant la boucle il ne reconnaît pas la valeur de la deuxiéme cellule qui suit. Et pour ouvrir le premier fichier en automatique il faut que je le fasse manuellement que je le ferme, puis je lance la macro et la il reconnaît ce fichier et l'ouvre, sinon rien, comment peut tu comprendre cela?

2-Je voudrais masquer des cellules qui contient un mot precis ou une chaine de caractéres qui comprend ce mot.
Ex: j'arrive a masquer les lignes qui contient par exemple le mot "brique"
Mais pas qui contient soit le mot" brique rouge" ou "brique vert"
Comment faire pour qu'il masque des qu'il y a la mot brique,

Range("W3").Select
'i = 1
'j = 4
Do Until Cells(i, j) = ""
If ActiveCell = ("Brique") Then ' pas complet
Selection.EntireRow.Hidden = True
End If
ActiveCell.Offset(1, 0).Range("A1").Select
Loop

3-Je voudrais en activant un cellule, si sa valeur correspond a un fichier *.xls existant il me dit si il existe ou pas.

Sub RefCouleur()
'met la cellule en 1 couleur si correspondant aux fichiers existants
'en une autre couleur si les fichiers n'existe pas

Range("G13:G30").Select
Selection.Interior.ColorIndex = xlNone
For Each cell In Worksheets("essai").Range("G13:G30")
If cell.Value = ?FichierExistants ? Then 'Le pb est la????
cell.Interior.ColorIndex = 3
Else
cell.Interior.ColorIndex = 6
End If
Next cell
End Sub

Et enfin je voudrais initialiser des ChecKBox_Click() et des button_Click dans une boite de dialogue (UserForm ) que j'ai créer.
Peut tu me donner un exemple avec 2 chexbox et le bouton valider qui permet de comfirmer mon choix entre les 2 cases a cocher. Ce code ne suffit pas…

Private Sub button1_Click()
Dim ButtonActif As Boolean
If CheckBox1.Value = xlOn Then
Workbooks.Open FileName:="D:\xxxx\yyyyy\jjjj.xls"
ButtonActif = CheckBox1.Caption
ElseIf CheckBox2.Value = xlOn Then
ButtonActif = CheckBox2.Caption
End If
End Sub

Si tu pouvais me donner des reponses ou des elements de reponses avant la fin de cette semaine , cela m'aiderais beaucoup. Je peux t'envoyer les reste de ma programmation si tu en sa besion.

Merci a+

4 réponses

TFlorian Messages postés 194 Date d'inscription dimanche 3 mars 2002 Statut Membre Dernière intervention 19 décembre 2005 3
5 mai 2002 à 23:14
Bonjour,

pour teste si un fichier est persent tu fair :

MyFile = Dir("C:\autoexec.bat")
si le fichier existe la variable MyFile contien le mon du fichier ,si il n'existe pas la variable est vide...

appers il te suffi de fair un test pour savoir si la variable est vide :

If MyFile="" then exit sub

(sort de la fonction si la variable est nul)
tu peut aussi fair un goto ......

pour tes brique ....
tu a une fonction qui s'appel like ...

voici sa syntaxe (aide de VB sur like)
Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' Renvoie True.
MyCheck = "F" Like "[A-Z]" ' Renvoie True.
MyCheck = "F" Like "[!A-Z]" ' Renvoie False.
MyCheck = "a2a" Like "a#a" ' Renvoie True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]"'Renvoie
MyCheck = "BAT123khg" Like "B?T*" ' Renvoie True.
MyCheck = "CAT123khg" Like "B?T*" ' Renvoie False.

tu peut aussi utiliser une methode de chois multiples
selecte case variable
case : cas_un
procedure
case : cas_deux
procedure cas 2
.
.
.
end select

Case a cocher, cois N°1 :

Private Sub Command1_Click()If Check1.Value True Or Check2.Value True Then
msgbox="l'un des deux checkbox est cochee"
Else
msgbox="aucun n'est coche..."
End If
End Sub

chois N° 2 :

Private Sub Command1_Click()
If Check1.Value = True Then
msgbox="checkbox un est cochee"
Else
msgbox="checkbox un n'est pas cochee"
End If
If Check2.Value = True Then
msgbox="checkbox deux est cochee"
Else
msgbox="checkbox deux n'est pas cochee"
End If
End Sub

.....

tu a bien d'autees combinaison possible !!!
Utilise les operateur logique !!!
OR (l'un OU l'autre)
AND (l'un ET l'autre)
NAND (l'un OU l'autre MAIS PAS LES DEUX)
...

pour ce qui est de l'ouverture des fichier verifi que tu envois bien ce qu'il faut a la fonction ouverture de fichier !!!

TFlorian.
0
cs_bernoux Messages postés 2 Date d'inscription samedi 4 mai 2002 Statut Membre Dernière intervention 8 mai 2002
8 mai 2002 à 18:55
Merci TFlorian pour ton aide
Pour l'ouverture du fichier voici les lignes que j'utilise, les fichiers s'ouvrent une fois sur 4 environ, je ne sais d'ou viens le pb.

Dim A As Integer
Dim b As Integer
A = 1
b = 7

Do Until Cells(A, b).Text = ""

Dim Chaine As String

Chaine = Worksheets("Exp_Lignes").Cells(A, b).Text

If ActiveCell = Chaine Then
Workbooks.Open (Chaine.xls)

@++
0
TFlorian Messages postés 194 Date d'inscription dimanche 3 mars 2002 Statut Membre Dernière intervention 19 décembre 2005 3
8 mai 2002 à 21:59
Bonjour,

bon ... je ne connais pas trop le vba ...
(rappel de ton code ...)
Dim A As Integer
Dim b As Integer
A = 1
b = 7
Do Until Cells(A, b).Text = ""
Dim Chaine As String
Chaine = Worksheets("Exp_Lignes").Cells(A, b).Text
If ActiveCell = Chaine Then
Workbooks.Open (Chaine.xls)

- controle la position de ton curseur car ActiveCell depend de ou tu vas avoir cliquer ...
(tu peut l'initilaiser avec Worksheets("Exp_Lignes").randge("F1")
(F1 doit je crois correspondre a cells(1,7))

- je ne comprand pas la fonction de ta ligne
Do Until Cells(A, b).Text = ""
ne manque til pas un loop quelleque par ?

- pour ton Workbooks.Open (Chaine.xls) , Chaine.xls ne devrais t'il pas etre entre " ?

-----------------

si je comprand ...
Do Until Cells(A, b).Text = ""
c'est en fait: boucle tanque la celule n'est pas vide ?

si tel est le can tu pourais peut etre utiliser la syntaxe suivante :

Dim A,B As Integer
Dim Chaine As String

A = 1
b = 7

if Cells(A, b).Text = "" then
Chaine = Worksheets("Exp_Lignes").Cells(A,b).Text
If ActiveCell = Chaine Then :
Workbooks.Open (Chaine.xls)
end if

By

TFlorian...
0
hebus16 Messages postés 80 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 2 octobre 2009 1
14 mai 2004 à 14:44
Salut tout le monde !!

Voila ce que je te propose :

1- je voudrais ouvrir des fichiers a partir de plusieurs cellule, chaque valeur d'une cellule contient le nom du fichier. J'ai reussi , mais en faisant la boucle il ne reconnaît pas la valeur de la deuxiéme cellule qui suit. Et pour ouvrir le premier fichier en automatique il faut que je le fasse manuellement que je le ferme, puis je lance la macro et la il reconnaît ce fichier et l'ouvre, sinon rien, comment peut tu comprendre cela?

bon alors ici on va utiliser les file system object pour faire l'ouverture de tes fichiers par contre il va de soi que tu dois controler l'existence des fichiers à ouvrir :

Sub FichierAOuvrir()
Dim fso, fdr, fc, fl ' declaration des objets file system object
Dim ii As Long
Dim S_Chemin As String, S_FichierAOuvrir As String
' on evite les messages d'alertes excel
Excel.Application.DisplayAlerts = False
' là on va recuperer le chemin complet qui te permet d'acceder à tes fichiers
' S_Chemin = Cells(1, "A").Value ' là tu as la solution la plsu simple ou l'utilisateur va remplir lui meme le chemin
' ThisWorkbook.path => te donne le chemin d'acces de ta macro
S_Chemin = ThisWorkbook.Path & "\FichierAOuvrir" ' ici tu dois avoir le dossier FichierAOuvrir de creer au même endroit que ta macro

' on recupere la liste des fichiers à traiter
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(S_Chemin) Then
MsgBox "Le dossier FichierAOuvrir n'existe pas dans le même repertoire que la macro!", vbCritical
GoTo finProcedure
Else
Set fdr = fso.GetFolder(S_Chemin)
Set fc = fdr.Files ' recuperation de tous les fichiers presents dans ce repertoire
End If

' là on va boucler sur toutes les cellules où tu peux renseigner les fichiers à ouvrir
For ii = 2 To 15
' on recupere le nom du fichier à ouvrir
S_FichierAOuvrir = ThisWorkbook.Worksheets("SaisieUtilisateur").Cells(ii, "A").Value
' on boucle sur la totalité des fichiers presents dans le repertoire
For Each fl In fc
' on regarde chacun des fichiers presents dans le rep et on compare les noms
' on verifie aussi que c'est bien un xls que tu ouvres If fl.Name S_FichierAOuvrir And Right(fl.Name, 4) ".xls" Then
Workbooks.Open (S_Chemin & S_FichierAOuvrir)
Exit For
End If
Next
Next ii

' on libere la memoire
Set fdr = Nothing
Set fc = Nothing

finProcedure:
Set fso = Nothing
' on remet les messages d'alertes excel et pas de maj ecran
Excel.Application.DisplayAlerts = True
End Sub

2-Je voudrais masquer des cellules qui contient un mot precis ou une chaine de caractéres qui comprend ce mot.
Ex: j'arrive a masquer les lignes qui contient par exemple le mot "brique"
Mais pas qui contient soit le mot" brique rouge" ou "brique vert"
Comment faire pour qu'il masque des qu'il y a la mot brique,

Sub brique()

'i = 1
'j = 4
' bon si j'ai bien compris cette focntion t'interressera bcp plus
' la focntion trim supprime les espace en debut et fin de chaine de caracteres
' la focntion UCase va mettre en majuscule ta chaine de caractere : comme ca Brique,briQue,brique ne possedera aucune difference

Do Until Cells(i, j) = ""
If InStr(1, Trim(UCase(Cells(i, j).Value)), "BRIQUE") Then
Selection.EntireRow.Hidden = True
End If
Loop

End Sub

3-Je voudrais en activant un cellule, si sa valeur correspond a un fichier *.xls existant il me dit si il existe ou pas.

Je pense que pour ce point tu trouveras la solution un peu plus haut :)

Et enfin je voudrais initialiser des ChecKBox_Click() et des button_Click dans une boite de dialogue (UserForm ) que j'ai créer.
Peut tu me donner un exemple avec 2 chexbox et le bouton valider qui permet de comfirmer mon choix entre les 2 cases a cocher. Ce code ne suffit pas.

Bon ici j'arrive pas trop à comprendre ce que tu veux réélement faire cependant je peux juste te conseiller d'eviter de melanger deux types de variables :
ButtonActif attend les valeurs True ou False or tu mets une varaible String à l'interieur .
tu peux mettre plus de détails pour cepoint ???

Private Sub button1_Click()
Dim ButtonActif As Boolean
If CheckBox1.Value = xlOn Then
Workbooks.Open FileName:="D:\xxxx\yyyyy\jjjj.xls"
ButtonActif = CheckBox1.Caption
ElseIf CheckBox2.Value = xlOn Then
ButtonActif = CheckBox2.Caption
End If
End Sub

Allez bonne chance !!
0
Rejoignez-nous