OVH Cloud OVH Cloud

question sur les tableaux

2 réponses
Avatar
Steph_D
Bonjour tout le monde,

J'ai un problème avec la macro suivante qui doit me lister les cellules et
leurs reférences en fonction de la formule renseignée. Les données trouvées,
archivées dans une variable tableau appelée MonTableau, sont bien là, mais
la commande suivante ne me les affiche pas dans ma feuille résultat (qui
reste vierge) :
Range("A1:A" & i).Value = MonTableau

Où ai-je commis l'erreur ? Merci pour votre aide
Steph. D.


'*************************************
Option explicit
Sub AfficherMesFormulesDeBase()
' Steph D.
' 20040428
Dim MaFeuille As Worksheet
Dim MaFeuilleResultat As Worksheet
Dim i As Integer
Dim MonTableau
Dim MaCellule As Range
Set MaFeuilleResultat = ActiveWorkbook.Worksheets.Add
i = 1
ReDim MonTableau(2500)
For Each MaFeuille In ActiveWorkbook.Sheets
For Each MaCellule In MaFeuille.Range("A1:AA200")
If MaCellule.HasFormula = True And InStr(1, MaCellule.Formula,
"conso", 0) = 0 _
And InStr(1, MaCellule.Formula, "alfa", 0) = 0 And InStr(1,
MaCellule.Formula, "nbcar", 0) = 0 Then
'si la cellule est de type formule et ne contient pas un des
arguments
' stockage des références de la cellule
MonTableau(i) = "'Feuille " & MaFeuille.Name & "Ref " &
MaCellule.AddressLocal & "Formule " & MaCellule.FormulaLocal
i = i + 1
End If
Next MaCellule
Next MaFeuille
ReDim Preserve MonTableau(i)
MaFeuilleResultat.Activate
Range("A1:A" & i).Value = MonTableau
End Sub

2 réponses

Avatar
Pierre Fauconnier
Bonjour

Je ne connais pas de technique pour le faire sans boucle.

for i = 0 to ubound(MonTableau)-1
range("a" & i)=montableau(i)
next i

Ok?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"Steph_D" a écrit dans le message de news:
d4qufo$hkh$
Bonjour tout le monde,

J'ai un problème avec la macro suivante qui doit me lister les cellules et
leurs reférences en fonction de la formule renseignée. Les données
trouvées,
archivées dans une variable tableau appelée MonTableau, sont bien là, mais
la commande suivante ne me les affiche pas dans ma feuille résultat (qui
reste vierge) :
Range("A1:A" & i).Value = MonTableau

Où ai-je commis l'erreur ? Merci pour votre aide
Steph. D.


'*************************************
Option explicit
Sub AfficherMesFormulesDeBase()
' Steph D.
' 20040428
Dim MaFeuille As Worksheet
Dim MaFeuilleResultat As Worksheet
Dim i As Integer
Dim MonTableau
Dim MaCellule As Range
Set MaFeuilleResultat = ActiveWorkbook.Worksheets.Add
i = 1
ReDim MonTableau(2500)
For Each MaFeuille In ActiveWorkbook.Sheets
For Each MaCellule In MaFeuille.Range("A1:AA200")
If MaCellule.HasFormula = True And InStr(1, MaCellule.Formula,
"conso", 0) = 0 _
And InStr(1, MaCellule.Formula, "alfa", 0) = 0 And InStr(1,
MaCellule.Formula, "nbcar", 0) = 0 Then
'si la cellule est de type formule et ne contient pas un
des
arguments
' stockage des références de la cellule
MonTableau(i) = "'Feuille " & MaFeuille.Name & "Ref " &
MaCellule.AddressLocal & "Formule " & MaCellule.FormulaLocal
i = i + 1
End If
Next MaCellule
Next MaFeuille
ReDim Preserve MonTableau(i)
MaFeuilleResultat.Activate
Range("A1:A" & i).Value = MonTableau
End Sub




Avatar
MichDenis
Bonjour Steph,

IL est possible de faire ce que tu demandes, mais tu dois modifier un peu ta procédure. Voici un exemple comment tu devrait traiter
ta variable tableau

Lorsque tu utilises ceci :
ReDim Preserve Tableau(1 To 1, B To A)
Ta variable Tableau doit être de deux dimensions et comme tu veux faire une copie de ton tableau directement dans une plage de
cellules de la feuille de calcul, ton tableau doit être de base 1 . Important : Avec Redim Preserve , seule la dernière dimensions
est redimensionnable. Il ne te reste plus qu'à adapter le concept de cet exemple à ta procédure pour la gestion du tableau !

Pourquoi un tableau à 2 dimension : Rapelle-toi, une cellule est localisée dans une feuille de calcul
par 2 dimensions : cells(ligne,Colonne)

'--------------------------------------
Sub Test()
Dim Tableau()
Dim A As Integer
Dim B As Long

For A = 1 To 5
ReDim Preserve Tableau(1 To 1, B To A)
Tableau(1, B) = A
Next

' J'ai utilise A-1 parce qu'à la sortie de la boucle
' la variable A = 6, pas 5 !
Range("A1:A" & A - 1) = Tableau
End Sub
'------------------------------------------


Salutations!


"Steph_D" a écrit dans le message de news: d4qufo$hkh$
Bonjour tout le monde,

J'ai un problème avec la macro suivante qui doit me lister les cellules et
leurs reférences en fonction de la formule renseignée. Les données trouvées,
archivées dans une variable tableau appelée MonTableau, sont bien là, mais
la commande suivante ne me les affiche pas dans ma feuille résultat (qui
reste vierge) :
Range("A1:A" & i).Value = MonTableau

Où ai-je commis l'erreur ? Merci pour votre aide
Steph. D.


'*************************************
Option explicit
Sub AfficherMesFormulesDeBase()
' Steph D.
' 20040428
Dim MaFeuille As Worksheet
Dim MaFeuilleResultat As Worksheet
Dim i As Integer
Dim MonTableau
Dim MaCellule As Range
Set MaFeuilleResultat = ActiveWorkbook.Worksheets.Add
i = 1
ReDim MonTableau(2500)
For Each MaFeuille In ActiveWorkbook.Sheets
For Each MaCellule In MaFeuille.Range("A1:AA200")
If MaCellule.HasFormula = True And InStr(1, MaCellule.Formula,
"conso", 0) = 0 _
And InStr(1, MaCellule.Formula, "alfa", 0) = 0 And InStr(1,
MaCellule.Formula, "nbcar", 0) = 0 Then
'si la cellule est de type formule et ne contient pas un des
arguments
' stockage des références de la cellule
MonTableau(i) = "'Feuille " & MaFeuille.Name & "Ref " &
MaCellule.AddressLocal & "Formule " & MaCellule.FormulaLocal
i = i + 1
End If
Next MaCellule
Next MaFeuille
ReDim Preserve MonTableau(i)
MaFeuilleResultat.Activate
Range("A1:A" & i).Value = MonTableau
End Sub