| 4 tototi, le 19 jan 2009 à 19:59:58Bon et bien je suis a cote. c'est un prog qui enregistre les classes crees, le nombre de ses eleves, les notes obtenues dans les differentes matieres, enfin ce genre de truc
j'ai pu rmettre a jour ls saisies "classses-eleves-matieres, etc..", mais je n'arrive pas a creer les fichiers nominatifs de ces classes afin d'attribuer a chacun...
alors voila la macro qui me cionce. si tu as un peu de temps peux tu voir pourquoi ca accroche. le passage de la souris atteste bien qu "mynom" a ete pris en compte, mais pas d'affichage
Sub fichier_enrg_noms()
Stop
Range("h38").Select
mynombre = Selection.Value
Selection.Value = mynombre
b = mynombre
Range("h41").Select
retour:
Mynom = Selection.Value ' lit le nom
Selection.Value = Mynom
Open "fichiernoms" For Output As #1
Print #1, Mynom
Close #1
Range("g44").Select
Selection.Offset(ligvar, colvar).Select
Open "fichiernoms" For Input As #1
Input #1, Mynom
Debug.Print , Mynom
Close #1
Range("h39").Select
ActiveCell.FormulaR1C1 = " "
b = b - 1
If b = 0 Then
ActiveCell.FormulaR1C1 = " fin "
Range("h34").Select
ActiveCell.FormulaR1C1 = " "
Range("h36").Select
ActiveCell.FormulaR1C1 = " "
Range("j37").Select
ActiveCell.FormulaR1C1 = " "
Range("e39").Select
ActiveCell.FormulaR1C1 = " "
Exit Sub
End If
GoTo retour
End Sub
merci de ton aide Répondre à tototi | Je n'ai pas toutes les données pour ajuster mais tu a déjà une idée avec cette macro.
'Mettre 10 noms (ou plus) à partir de G44 jusque G54 ou plus
'laisser une cellule vide après le dernier nom
Sub fichier_enrg_noms()
Dim Fich As Integer, FichierNoms As String
Dim Lig As Long, L
'ouvre le fichier pour écrire tout les noms dedans
FichierNoms = ThisWorkbook.Path & "\FichierDesNoms.txt"
Fich = FreeFile 'Un N° de fichier libre
Open FichierNoms For Output As #Fich
With Sheets("Feuil1") 'adapter le nom de la feuille
Lig = 44
While Cells(Lig, 7) <> ""
Print #Fich, Cells(Lig, 7)
Lig = Lig + 1
Wend
Close #Fich
'Ici tout les noms sont dans le fichier
'Ont les reprend et les écrit dans la colonne J
Lig = 44
Open FichierNoms For Input As #Fich
While Not EOF(Fich)
Input #Fich, L
Cells(Lig, 10) = L
Lig = Lig + 1
Wend
Close #Fich
Range("h39") = " fin "
'Ont vide toutes tes cellules.
Range("h34,h36,j37,e39").ClearContents
End With
End Sub
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) Répondre à lermite222 | 9 tototi, le 20 jan 2009 à 10:04:40Bonjour lermite222, c'est encore moi, merci de ta reponse mais ca cionce encore au niveau de :
Fich = FreeFile 'Un N° de fichier libre
Open FichierNoms For Output As #Fich
j'ai fait "Fich=FreeFile(1)", essaye FileNumber a la place de fich (mot cle donne par excel), et essaye encore d'autres formulation, je bute toujours sur l'ouverture du fichier. (erreur chemin d'acces (75))
je sais que j'abuse, mais aurais tu encore un peu de temps, je voudrais bien comprendre car ce probleme va se representer par la suite
merci Répondre à tototi | Oui, tu à certainbement essayé sur Classeur1 qui n'est pas sauvé.
Tu sauve le classeur dans un répertoir ensuite ça devrais aller.
Et tu ne doit rien changer dans la macros, je l'ai testée avant de te la passer et toiut est clean.
Tu dit...
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) Répondre à lermite222 | Miracle !!ca marche ! ca resonnera moins si je cogne un pot. un petit probleme avec la selection de la feuille, poutant bien sur feuil1, ca ne lui a pas plu. pas tres grave, je devrais y arriver
un grand merci a toi, voila une semaine qu je cherchais cette solution.
si a mon tour je peux t'aider... Répondre à tototi |
| Bonjour. autre question, si possible
comment forcer mon fichier a prendre pour nom (Open FichierNoms For Output As #Fich) un intitule cree lors de la saisie qui se presente sous forme de chaine (truc 1a), et qui de plus soit reconnu par les differentes macros. cet intitule (on peut supprimer l'espace) est appele a changer (machin 2b) mais qu'apres le passage par toutes les macros, lors d'une nouvelle saisie. en basic j'avais fait une variable (machin$) que je n'arrive pas a creer sous excel
merci d'une reponse Répondre à tototi | Bonjour
Dans un module général (Module1 par ex.) tu met
Pubilc NomFic As String
Tu peu l'initialiser n'importe où dans l'appli (c'est une variable texte)
Sub fichier_enrg_noms()
Dim Fich As Integer , FichierNoms As String
Dim Lig As Long, L
'ouvre le fichier pour écrire tout les noms dedans
'Il ne faut pas que l'extention soit déjà mise
FichierNoms = ThisWorkbook.Path & "\" & NomFic & ".txt"
......
......
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) Répondre à lermite222 | Bonjour. ca progresse, je crois en voir le bout
J’incorpore sur mon module d’entree la declaration de variable
Sub debut2
Pubilc NomFic As String
Je remplace l’instruction d’ouverture de fichier par
Sub fichier_enrg_noms()
Dim Fich As Integer , FichierNoms As String
Dim Lig As Long, L
FichierNoms = ThisWorkbook.Path & "\" & NomFic & ".txt"
et la suite
Si je lance mon module d’entree la declaration de variable est refuse (erreur de syntaxe)
J’ai essayer plusieurs trucs, private, public conts, etc, ca marche pas
Si j’annule cette declaration mon programme se poursuit et cree un fichier \.txt (sans le nom qui devrait etre ma variable)
Ce fichier s’ouvre dans excel, je le complete par des valeurs numeriques dans les lignes
Je veux enregistrer ce fichier sous un autre nom (variable)
Quelle est l’instruction pour enregistrer la ligne complete, excel refuse line input, sans avoir a taper toutes les cellules
Ca va etre pareil pour write ou append, connais tu les equivalents
question subsidiaire, vb6 vaut il l'effort ou un autre langage
merci encore une fois pour ton aide Répondre à tototi | Tu a mis quelque chose dans NomFic ?
NomFic = "LeNomDuFichierIci"
Si oui, c'est que tu n'a pas mis la déclaration au bon endroit.
Si VBA (excel) dans un module général (Module1)
Si VB6 (parceque tu me parle de VB6 ?) aussi sur un module général.
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) Répondre à lermite222 | Oui, public FichierNoms as string, dans le module de depart
reponse de excel : (attribut incorrect dans une procedure sub ou fonction)
dans l'aide je trouve
(Certains attributs sont incorrects dans des procédures. Cause et solution de cette erreur :
Un attribut Public ou Private apparaît au sein d'une définition de procédure.
Supprimez l'attribut de la procédure. Pour élargir la portée de la variable, déplacez la déclaration jusqu'au niveau module. Les variables déclarées au sein des procédures sont toujours Private.)
mystere Répondre à tototi | Tu n'y est pas du tout....
Je ne sais plus comment je doit expliquer....!!!!!!
Revoir le poste 13
Et quand ont te pose une question la moindre des chose c'est d'y répondre.
VB6 ou VBA ???????
Vu que tu parlais d'excel je vais considérer que tu est en VBA
Quand tu est dans l'éditeur de macro...
>> Insertion >> Module >> et c'est dans cette nouvelle fenêtre que tu doit écrire
Public NomFic as string
et rien d'autre.
.
ensuite tu modifie le début de la macro pour que ce soit comme ci-dessous
Sub fichier_enrg_noms()
Dim Fich As Integer , FichierNoms As String
Dim Lig As Long, L
NomFic = InputBox("Entrer le nom du fichier"
'ouvre le fichier pour écrire tout les noms dedans
'Il ne faut pas que l'extention soit déjà mise
FichierNoms = ThisWorkbook.Path & "\" & NomFic & ".txt"
......
......
Autre alternative
Dans Excel en Z1 tu tape le nom que tu veux donner à ton fichier
par exemple Annee2009 ou encore Machin ou Truc
et tu adapte le début de la macro comme ci-dessous.
Sub fichier_enrg_noms()
Dim Fich As Integer , FichierNoms As String
Dim Lig As Long, L
NomFic = ActiveSheet.range("Z1")
'ouvre le fichier pour écrire tout les noms dedans
'Il ne faut pas que l'extention soit déjà mise
FichierNoms = ThisWorkbook.Path & "\" & NomFic & ".txt"
......
......
En tout cas, t'est dur à la détente :-)
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) Répondre à lermite222 | Je vais entrer tes dernieres instructions, instructions excel
excel, vba ?, le probleme est bien la. je suis sur excel et j'ai monte visual basic 2008 express sur une autre machine, et les macros qui fonctionnent sur excel coince la dessus, justement au niveau des enregistrements
ma question etait quel est le plus facile entre vba et autre langage
merci pour ton aide, je vais pas t'enerve plus, et te dirais si ca marche
merci encore
a+ Répondre à tototi |
| Je suis pas enervé du tout mais je voulais un peu te secouer les puces :-))
Rien de ce dont ont discute ne va aller sur VB2008.Net et c'est tout a fait autre chose.
Il y a VB6 qui est identique au VBA d'excel mais il n'est plus commercialisé et vaux mieux apprendre le 2008
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius) Répondre à lermite222 |
| Content que tu ne soit pas enerve. ton instruction excel fonctionne, je me suiis arrange pour retrouver "z1" a chaque macro. peut etre pas tres orthodoxe mais ca marche. meme en xls a la place de txt. je vais essayer de passr ca en "variable constante" et voir pour enregistrer et reafficher en "line input".
ca va bien te laisser respirer quelques jours :-))
a+ Répondre à tototi |
| Bonjour. juste pour info, mais si tu as la solution...
je suis sur une machine avec vista premiun, l'autre sur xp pro mediacenter, le meme excel sur les deux
j'ai une macro avec l'instruction
With Sheets("archive")
.Activate
LigDispo = .Range(Cells(65536, 1), Cells(65536, 1)).End(x1Up).Row + 1
.Range(Cells(LigDispo, 1), Cells(LigDispo, 1)).Select
End With
la machine en xp l'accepte, pas vista. sur ce vista j'ai ce meme excel sur un virtuel, et c'est pas accepte non plus
j'ai contourne ce truc mais je me demande si ce programme, si j'arrive au bout, fait sur vista sera lisible sur xp
a+ Répondre à tototi |
|
|
|
|
|
|
|
|
|
|