Macro excel

Résolu
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -  
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, qui peut me dire quelle est l'instruction, dans une macro excel, pour creer un fichier et y entrer des donnees, et le reouvrir pour lire ces donnees
merci d'une reponse
A voir également:

11 réponses

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Sub EcrireFichier()
    F = FreeFile
    MaVar = "Je veux écrire dans un fichier texte."
    Open "Essais" For Output As #F
    Print #F, MaVar
    Close #F
End Sub

Sub LireFichier()
    F = FreeFile
    Open "Essais" For Input As #F
    Input #F, MaVar
    Close #F
    'Le texte est dans MaVar
End Sub



A+
0
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1
 
merci pour la reponse. si je comprends bien je dois creer une macro, et non pas demander la creation du fichier a l'interieur d'une macro. je vais essayer ca. j'essaye de reutiliser des prog. que j'avais fait en qbasic, c'est vieux, un truc pour gestion scolaire
ton histoire de cruche qui sonne creux me plait bien
merci
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Si, tu peu utiliser le code à l'intérieur d'autre macro, c'était juste pour la démo.
0
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1
 
bon 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
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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+
0
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1 > lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention  
 
bonjour 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
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191 > tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1 > lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention  
 
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...
0
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1 > lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lp1904
 
Bonjour,
j'ai créer un userform avec liste déroulante qui s'ouvre lorsque une cellule A1 est selectionée.
Dans une macro, j'ai besoin à un moment de selectionner cette cellule A1 pour la copier vers une autre et aussi pour effacer son contenu... mais voilà, mon userform s'ouvre dés que ma macro se positionne sur cette cellule A1!!!
en fait, je voudrais qu'à ce moment précis dans ma macro, le selection de cette cellule A1 ne lance pas mon userform mais l'ignore !!
merci de votre aide
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Tu colle le code ci-dessous dans le module de ta feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        If Target <> "" Then
            'Userform1.show
        End If
    End If
End Sub

Quand il y aura du texte dans A1 l'UF sera ouvert sinon non.
A+
0
lp1904
 
merci à toi
bonne soirée
0
mika
 
bonjour escuse moi je sais plus comment on met sur resolu lol !!
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Je reprend sur une nouvelle fenêtre parce que les réponse commence à être trop petites et il me manque la moitié des mots.

1°) LigDispo = .Range(Cells(65536, 1), Cells(65536, 1)).End(x1Up).Row + 1
pas besoin de 2 x Cells tu remplace par
LigDispo = .Range("A65536")).End(x1Up).Row + 1 
ou
LigDispo = .Cells(65536,1)).End(x1Up).Row + 1

2°) concernant ta question, j'ignore pourquoi mais il arrive qu'avec With excel refuse certaine fonction que ce soit sur XP ou vista.
Quand j'ai ça, je ne me casse pas la tête, j'emploi l'une de ces 2 solutions.
Si tu n'a que la ligne où tu initialise LigDispo le with vaut pas la peine, je fait
    LigDispo = Sheets("archive").Range("A65536")).End(x1Up).Row + 1 


Si plusieur lignes y fait appel
Dim FL1 as WorkSheet
    Set FL1 = Sheets("archive") 
    LigDispo = FL1.Range("A65536")).End(x1Up).Row + 1

A+
0
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour. et bien avec ton aide je suis arrive au bout de mon bidule. reste tout de meme une question, si j'ai dans une
colonne x cellules (1, 12,ou autre) a renseigner, est il possible de faire apparaitre un bouton de commande apres la derniere saisie. pas evident a priori
encore une fois merci de ton aide
a+
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Pas de problème,
mettre un bouton sur la feuille avec sa propriété Visible = False
Dans l'événement SelectionChange de la feuille tester les cellules à remplir et si elles sont remplie mettre le bouton à Visible=true.
Si tu veux Créer le bouton par code Voir là
Une idée pour Le test des cellules
A+
0
tototi Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour
de retour devant l'ecran, j'ai suivi tes instructions, et ca marche. la cerise suir le gateau
grand merci pour ton aide
a +
0