[VBA EXCEL] besoin d'aide pour une macro
Nyck0las
-
ShaBoo Messages postés 392 Date d'inscription Statut Membre Dernière intervention -
ShaBoo Messages postés 392 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila je suis super débutant en VBA et j'essaie de programmer une fonction complémentaire.
Mon but est de prendre comme argument une plage de cellules (plusieurs cellules sur une meme ligne ou sur une meme colone), de déterminer le nombre de cellules. A partir de là, je construis un vecteur colonne en prenant les données de la plage de cellules et une matrice.
On termine ensuite par un ou 2 petits calculs.
Je vous mets ce que j'ai écrit pour me dire ce qui ne va pas ...
Function Note(E)
' E correspond à une plage de cellules
Dim n As Integer
Dim an
Dim A, Am
Dim i As Integer, j As Integer
Dim lg As Integer, cl As Integer
Set P = Range("E")
lg = P.Rows.Count
cl = P.Columns.Count
'mes données sont sur une meme ligne ou sur une meme colonne
' et je souhaite le déterminer
If cl = 1 Then
n = lg
ElseIf lg = 1 Then
n = cl
End If
an = 2 * Pi / n
'définition de ma matrice et de mon vecteur
Dim M(n - 1, n - 1)
Dim X(n - 1, 0)
If cl = 1 Then
For i = 0 To n - 1
X(i - 1, 0) = R(i - 1, 0)
Next i
ElseIf lg = 1 Then
For i = 0 To n - 1
X(i - 1, 0) = R(0, i - 1)
Next i
End If
For i = 0 To n - 1
For j = 0 To n - 1
M(i, j) = 0
Next j
Next i
M(n - 1, 0) = 1
For i = 0 To n - 2
M(i, i + 1) = 1
Next i
'quelques petits calculs
A = 1 / 2 * Sin(an) * Transpose(X) * M * X
Am = 1 / 2 * Sin(an) * 100 ^ 2 * n
Note = A / Am
End Function
merci bp
voila je suis super débutant en VBA et j'essaie de programmer une fonction complémentaire.
Mon but est de prendre comme argument une plage de cellules (plusieurs cellules sur une meme ligne ou sur une meme colone), de déterminer le nombre de cellules. A partir de là, je construis un vecteur colonne en prenant les données de la plage de cellules et une matrice.
On termine ensuite par un ou 2 petits calculs.
Je vous mets ce que j'ai écrit pour me dire ce qui ne va pas ...
Function Note(E)
' E correspond à une plage de cellules
Dim n As Integer
Dim an
Dim A, Am
Dim i As Integer, j As Integer
Dim lg As Integer, cl As Integer
Set P = Range("E")
lg = P.Rows.Count
cl = P.Columns.Count
'mes données sont sur une meme ligne ou sur une meme colonne
' et je souhaite le déterminer
If cl = 1 Then
n = lg
ElseIf lg = 1 Then
n = cl
End If
an = 2 * Pi / n
'définition de ma matrice et de mon vecteur
Dim M(n - 1, n - 1)
Dim X(n - 1, 0)
If cl = 1 Then
For i = 0 To n - 1
X(i - 1, 0) = R(i - 1, 0)
Next i
ElseIf lg = 1 Then
For i = 0 To n - 1
X(i - 1, 0) = R(0, i - 1)
Next i
End If
For i = 0 To n - 1
For j = 0 To n - 1
M(i, j) = 0
Next j
Next i
M(n - 1, 0) = 1
For i = 0 To n - 2
M(i, i + 1) = 1
Next i
'quelques petits calculs
A = 1 / 2 * Sin(an) * Transpose(X) * M * X
Am = 1 / 2 * Sin(an) * 100 ^ 2 * n
Note = A / Am
End Function
merci bp
A voir également:
- Variable ou procédure attendue et non un module
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
26 réponses
j'ai trouvé le pb en fait il faut considere à aprt les cas n=1 ou n=2 car mon échantillon test est de petite taille
par contre il m'est encore apparu un autre problème alors que je testais ce petit prog sur une plus grande échelle et davantage de données.
En fait je travaille sur des données chiffrées mais il peut arriver que certaines cellules contiennent "-", ce qui signifie qu'il ny' a pas de résultat. El là çà coince dans le programme au niveau de la multiplication des matrices
la ligne :
C(i, j) = C(i, j) + A(i, k) * B(k, j)
est surlignée et le message d'erreur est:
"erreur d'exécution 13 : incompatibilité de type"
what can I do ??
En fait je travaille sur des données chiffrées mais il peut arriver que certaines cellules contiennent "-", ce qui signifie qu'il ny' a pas de résultat. El là çà coince dans le programme au niveau de la multiplication des matrices
la ligne :
C(i, j) = C(i, j) + A(i, k) * B(k, j)
est surlignée et le message d'erreur est:
"erreur d'exécution 13 : incompatibilité de type"
what can I do ??
existe-t-il un test pour savoir si un élément n'est pas un nombre ??
car en fait, le contenu de ma cellule peut etre :
- un nombre
- un caractète "-"
- un texte "SO"
- vide
- #valeur
car en fait, le contenu de ma cellule peut etre :
- un nombre
- un caractète "-"
- un texte "SO"
- vide
- #valeur
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question