Propriété formula

Résolu
Tobi26 Messages postés 56 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 6 juillet 2006 - 17 mai 2006 à 11:01
Tobi26 Messages postés 56 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 6 juillet 2006 - 17 mai 2006 à 13:38
NHenry avais réussi à répondre à ma question concernant la propriété formula (cf post d'hier), mais il y a une erreur que je viens de découvrir aujourd'hui :

En fait si on donne 27 comme valeur pour a (dans mon exemple), le code ne fonctionne plus et il y a une erreur du type "Erreur définie par l'application ou par l'objet", je pense que cette erreur arrive au moment où les colonnes prennent le format AA, AB, AC etc.

Je donne à nouveau mon code pour pouvoir résoudre ce problème :

Sub essai()
Dim a, b, c, d As Integer
a = 27
b = 8
c = 4
d = 8
Cells(8, 2).Formula = "=$" + Chr$(Asc("A") + a - 1) + "$" + Format(b) + "+$" + Chr$(Asc("A") + c - 1) + "$" + Format(d)
Cells(8, 2).NumberFormat = "General"
End Sub

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 mai 2006 à 13:16
même carément pas de là : Excel accepte également les minuscules.....
j'ai mis un point d'arret sur le En Function de GetColumnName...

cette fonction est tout simplement fausse.... si on fais par exemple GetColumnName ( 27), on obtient
`b

le mieux, est de laisser Excel faire cette conversion :

Cells(8, 2).Formula = "=" & Cells(b, a).Address & "+" & Cells(d, c).Address

Renfield
Admin CodeS-SourceS- MVP Visual Basic
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
17 mai 2006 à 11:09
Salut,
(je suis clélèbre )

Oui, ça vien de là.
private function GetColumnName(byval pIndex as long) as string
    if pIndex<=26 then
       GetColumnName=chr$(asc("a")+pIndex-1)
    else
       GetColumeName=chr$(asc("a")+(pindex MOD 27)-1))+chr$(asc("a")+int(pindex /27)))
    End if
End Fuunction

puis tu remplace :
Chr$(Asc("A") + a - 1)
par
GetColumnName(a)

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
Tobi26 Messages postés 56 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 6 juillet 2006
17 mai 2006 à 11:19
Je n'arrive pas encore à le faire fonctionner mais je pense que c'est une erreur de ma part. (surtt que je ne comprend pas trop le code depuis hier en fait lol :-p )

Mais ça arrive !
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
17 mai 2006 à 11:23
Bonjour

Met peut-être la patie du code qui pose pb.

Chr : transforme un nombre en son équivalent ASCII
Asc : fait l'inverse.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0

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

Posez votre question
Tobi26 Messages postés 56 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 6 juillet 2006
17 mai 2006 à 11:28
Le code en entier
<hr size="2" width="100%" />Function GetColumnName(ByVal pIndex As Long) As String
    If pIndex <= 26 Then
       GetColumnName = Chr$(Asc("a") + pIndex - 1)
    Else
       GetColumnName = ((Chr$(Asc("a") + (pIndex Mod 27) - 1)) + Chr$(Asc("a") + Int(pIndex / 27)))
    End If
End Function
<hr size="2" width="100%" />Sub essai()
Dim a, b, c, d As Integer
a = 27
b = 8
c = 4
d = 8

Cells(8, 2).Formula = "=$" + GetColumnName(a) + "$" + Format(b) + "+$" + Chr$(Asc("A") + c - 1) + "$" + Format(d)
Cells(8, 2).NumberFormat = "General"

End Sub
<hr size="2" width="100%" />
L'erreur : "Erreur définie par l'application ou par l'objet"
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 mai 2006 à 12:03
le tout, Tobi n'est pas de recevoir un code qui marche direct...
il s'agit bel et bien de le comprendre.

c'est pas Asc("a") qu'il faut, mais Asc("A")

les colonnes, dans excel utilisent des majuscules....
adaptes toi, et ouvres l'oeil....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Tobi26 Messages postés 56 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 6 juillet 2006
17 mai 2006 à 12:44
Même avec ton aide Renfield, (on remplace les Asc("a") par Asc("A")), le code ne fonctionne pas donc le problème ne viens pas de là.
0
Tobi26 Messages postés 56 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 6 juillet 2006
17 mai 2006 à 13:38
Merci beaucoup pour m'avoir aidé jusqu'au bout :-) Maintenant ma procédure marche correctement et je vais pouvoir continuer mon travail :-)

Merci beaucoup à vous 2 !
0
Rejoignez-nous