methode Range de _Worksheet a échoué

sergio_bzh

XLDnaute Nouveau
Bonjour,
je suis encore en train de me débattre avec des erreurs VBA, qui pour moi sortent de nulle part. Excel et VBA, c'est vraiment fatigant !

A la base, je veux simplement, nommer une plage de cellule à partir de numéros de ligne et colonne et du nombre de lignes et colonnes.
J'ai donc fait une routine et j''ai 2 appels quasiment identiques. L'un fonctionne, l'autre non.

Code:
Call AddPlage("DepBox", NbDep, "myFeuill2", RowOri, ColOri , 1, NbUser - 1)
Call AddPlage("Dep", NbDep, "myFeuill1", RowOri , ColOri, 1, NbUser - 1)

Sub AddPlage(ByVal rootName As String, ByVal n As Integer, ByVal feuill As String, _
                ByVal initRow As Integer, ByVal initCol As Integer, _
                ByVal nRow As Integer, ByVal nCol As Integer)
    Dim Plage1 As Range
    Dim UnePlage As Range
    Set Plage1 = Sheets(feuill).Cells(initRow, initCol)
    Set UnePlage = Range(Plage1, Plage1.Offset(nRow - 1, nCol))
    ActiveWorkbook.Names.Add Name:=rootName & n, RefersTo:=feuill & "!" & UnePlage.Address
End Sub

le 1er appel ne fonctionne pas, le 2nd si.
La seule différence est sur le nom de la feuille.
Sinon j'ai bien vérifié que les noms n'existaient pas auparavant et l'ordre des appels n'a aucune importance.

Si qqun a une idéé, merci.
Sergio

Excel 2000 + XP SP2
 
C

Compte Supprimé 979

Guest
Re : methode Range de _Worksheet a échoué

Salut Sergio,

Question bête mais bon,
Est-ce que ta feuille "myFeuill2" existe dans ton classeur !?

Sinon j'ai essayé le code et chez moi les 2 appels fonctionnent très bien

A+
 

sergio_bzh

XLDnaute Nouveau
Re : methode Range de _Worksheet a échoué

Merci pour la réponse. Oui la feuille existe, je fais bien d'autres manips dans cette feuille avant cela. Et j'ai bien vérifié le nom de la feuille.
Mais j'ai l'impression que c'est un problème plutôt système et aléaroire car j'ai déjà eu ce même message l'autre jour à un autre endroit, idem sans qu'il n'y ait aucune raison apparente (mais il me semble que c'était la même feuille).
J'ai abandonné et depuis je n'ai pas revu ce message.

En fait je travaille sur Mac en virtualisation avec VMWare mais tout fonctionne parfaitement avec Windows VMWare.

Je pense que je vais essayer d'installer un Office supérieur (2003 ou mieux).
Question : est-ce que les macros écrites en 2003 seront compatibles 2000 sachant que je me limite à des boutons et des checkbox dans mon VBA ?

Sergio

PS : j'ai oublié de préciser que l'erreur vient de la ligne où nRow=1 et nCol=1 :
Code:
Set UnePlage = Range(Plage1, Plage1.Offset(nRow - 1, nCol))
 

sergio_bzh

XLDnaute Nouveau
Re : methode Range de _Worksheet a échoué

j'ai supprimé la feuille , recréé une nouvelle feuille vierge : idem.
Et en fait, le problème est le même pour toutes les feuilles sauf une !

A la limite, si qqun pouvait me donner une syntaxe différente pour créer une zone nommée à partir des numéros de lignes et colonnes et de la taille de la plage ...

Merci.
Sergio
 

sergio_bzh

XLDnaute Nouveau
Re : methode Range de _Worksheet a échoué

j'ai testé une autre méthode mais il subsiste un pb :

Code:
Sub AddPlage(ByVal rootn As String, ByVal n As Integer, ByVal feuill As String, _
                ByVal initRow As Integer, ByVal initCol As Integer, _
                ByVal nRow As Integer, ByVal nCol As Integer)
    Dim refr As String
    refr = feuill & "!" & ActiveSheet.Cells(initRow, initCol).AddressLocal
    refr = refr & ":" & ActiveSheet.Cells(initRow + nRow - 1, initCol + nCol - 1).AddressLocal
    ActiveWorkbook.Names.Add Name:=rootn & n, RefersTo:=refr
End Sub

le problème est que mon nom est défini comme ="myFeuille!$D21$E21" (avec les doubles quotes) et non pas =myFeuille!$D21$E21 comme sont les autres noms.

Comment faire pour le bon RefersTo ?

Merci.
Sergio
 

sergio_bzh

XLDnaute Nouveau
Re : methode Range de _Worksheet a échoué

Pour ce dernier probleme, j'avais oublié le "=" au debut de ma variable pour le RefersTo.

Ceci dit, j'ai encore d'autres problèmes, je vais donc faire un autre post. Mais c'est vraiment une galère de faire du VBA. Jamais vu un environnement qui aide aussi peu le programmeur. Trouver la syntaxe, c'est une horreur, trouver l'origine des erreurs est presque mission impossible.

Je fais cela à mes heures perdues mais après 10 jours quand je vois où en est ma toute petite appli excel , je me dis que j'avais bien d'autres choix beaucoup plus "efficace" : VB , VB.net, RealBasic ou Java

Sergio
 
C

Compte Supprimé 979

Guest
Re : methode Range de _Worksheet a échoué

Salut Sergio,

Si tu sais développer en VB.net, le VBA ça devrait facile pour toi :D

Sinon pour ton code tu peux garder le premier en rajoutant le "="

Code:
Sub AddPlage(ByVal rootName As String, ByVal n As Integer, ByVal feuill As String, _
                ByVal initRow As Integer, ByVal initCol As Integer, _
                ByVal nRow As Integer, ByVal nCol As Integer)
    Dim Plage1 As Range
    Dim UnePlage As Range
    Set Plage1 = Sheets(feuill).Cells(initRow, initCol)
    Set UnePlage = Range(Plage1, Plage1.Offset(nRow - 1, nCol))
    ActiveWorkbook.Names.Add Name:=rootName & n, RefersTo:=[B][COLOR=blue]"="[/COLOR][/B] & feuill & "!" & UnePlage.Address
End Sub

A+ sur un autre fil
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU