Lecture fichier Excel sous VBA
je dispose d'un fichier appelé "pluie" sous excel et j'aimerais savoir comment le lire a partir d'un autre classeur excel.
j'aimerai avoir la valeur A2 du fichier qui correspond à l'année de la mesure mais je n'y arrive pas
je vous laisse mon travail et je vous serais trés reconnaissant de trouver la ou les erreurs
(par contre la partie du programme pour savoir si l'année est bissextile ou non est bonne)
Merci d'avance
Sub max()
Dim v() As Single
Dim i As Integer, pluie As String
Dim MOY As Single
Dim titre As Single
Dim N As Variant
Dim b As Integer
Dim c As Integer
pluie = Application.GetOpenFilename
Open pluie For Input As #1
Input #1, titre
For i = 1 To N
Input #1, v(i)
Next i
ReDim v(N)
'année bissextile si divisible par 400
Dim a As Integer
a = (Workbooks(1).Worksheets("feuil1").Range("A2").Value) (le probleme c'est qu'il ne va pas chercher la valeur a dans le bon classeur il va la chercher dans le classeur ouvert pas dans le fichier pluie)
b = a Mod 4
c = a Mod 100
If b = 0 And c <> 0 Then
MsgBox ("L'année est bissextile")
Else
MsgBox ("l'année est non bissextile")
End If
Close #1
End Sub
Bonjour,
Est-ce que le fichier PLUIE est ouvert avec celui dans lequel tu veux mettre la valeur en A2.
Cette macro se trouve dans le fichier PLUIE ou l'autre ?
A te lire
Dan
Re bonjour,
Merci tout d'abord de prendre du temps pour resoudre mon probleme
en fait le but de la macro que je tente de créer c'est d'aller chercher un fichier situé dans un dossier quelconque et de le lire
c'est l'utilisateur qui est censé aller chercher ce fichier
une fois ce fichier ouvert et lu aprés je veut calculer les moyennes des episodes pluvieux
je vous joint le fichier (que l'on est censé ouvrir grace au programme)
peut etre que ce sera plus compréhensible
https://www.excel-pratique.com/~files/doc/pluie.xls
merci beaucoup
cordialement
Salut le forum
Une facon de récupérer des valeurs dans un fichier fermé.
Sub LireCellule()
GetValues "C:\Excel", "pluie.xls", "Feuil1", "A2", "A1"
End SubSub GetValues(fPath As String, fName As String, sName, _
cellRange As String, place As String)
With ActiveSheet.Range(place)
.FormulaArray = "='" & fPath & "\[" & fName & "]" & sName & "'!" & cellRange
.Value = .Value
End With
End SubMytå
Re,
Dans ta macro remplace le code par celui-ci :
Sub max()
Dim v() As Single, MOY As Single, titre As Single
Dim pluie As String
Dim N As Variant
Dim a As Integer, b As Integer, c As Integer, i As Integer
pluie = Application.Dialogs(xlDialogOpen).Show
'Open pluie For Input As #1
' Input #1, titre
For i = 1 To N
Input #1, v(i)
Next i
ReDim v(N)
'année bissextile si divisible par 400
Set ref = Workbooks(1).Worksheets("feuil1")
With ref
.Range("A3") = Range("A2").Value
.Range("A3") = a
End With
b = a Mod 4
c = a Mod 100
If b = 0 And c <> 0 Then
MsgBox ("L'année est bissextile")
Else
MsgBox ("l'année est non bissextile")
End If
Close #1
End SubLa macro est placée dans le fichier où tu fais l'analyse.
Lorsque la boite pour l'ouverture du fichier s'ouvre, pour le choix du fichier
Double clique pour l'ouverture.
J'ai laissé quelques codes de ta précédente macro pour le cas où tu voudrais les utiliser. Comme je travaille sous excel MAC, certaines instructions ne fonctionnent pas de la même manière.
Vérifie et dis moi
A te lire
Dan
PS : Salut Myta !!
En reprenant ta macro le fichier s'ouvre bien par contre le probleme est que si je fais un msgbox pour savoir quelle valeur de "a" est prise en compte, il me donne a = 0 au lieu de 1983 et je ne sais pas pourquoi..
(PS dans le fichier en piece jointe la cellule A2 ne contient plus que "1983" comme valeur
Merci encore pour tout
mantel
re,
c'est bon j'ai trouvé pourquoi l'année 2004 ne s'affichait pas
(en fait l'erreur était dans le workbooks)
au lieu de workbooks("1") il fallait écrire workbooks("pluie.xls")
cordialement
merci