Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
702 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Selection problématique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Selection problématique

n°1180620
oaglas
Posté le 21-08-2005 à 14:28:25  profilanswer
 

Bonjour,  
 
Quelqu'un pourrait-il m'expliquer pourquoi, lorsque le code ci-dessous est exécuté, il plante systématiquement (Erreur 1004) sur la dernière ligne (avant le end if) ? Parce que ça fait un paquet de temps que je cherche sans succès. Merci de m'aider à sortir de ce cul de sac !  
 
 
    Dim a As Integer
     
    NBL = Selection.Rows.Areas.Count
    'Si plusieurs lignes dans Sélection
    If NBL > 1 Then
     
        Dim formule As String
 
        'entête de formule (appel à une fonction perso)
        formule = "=PRECEDE(" & Cells(Selection.Areas(1).Row, 7).Address
         
       & nbsp;'construction de la suite de la formule  
        For i = 2 To (NBL - 1)
            formule = formule & ";" & Cells(Selection.Areas(i).Row, 7).Address
        Next i
         
        'fin de formule
         formule = formule & " )"
         
       'copie de la formule constituée
        Worksheets("Plan" ).Cells(Selection.Area s(NBL).Row, 8).Formula = formule
    End if
 
 
 
Pour info, je cherche juste à copier une formule dans une cellule, sachant que la formule en question est fonction des lignes sélectionnées (au moins 2), le code est exécuté par clic sur sur un bouton.

mood
Publicité
Posté le 21-08-2005 à 14:28:25  profilanswer
 

n°1180631
olivthill
Posté le 21-08-2005 à 14:44:10  profilanswer
 

:hello:  
La fonction "PRECEDE" n'existe pas sur ma version française. Par curiosité, pourrais-tu m'indiquer ce que fait cette fonction ?
Le problème peut venir des indices ou des point-virgules.  
Il faudrait mettre un msgbox(formule) juste avant la copie de la formule, pour voir ce qu'elle contient.


Message édité par olivthill le 21-08-2005 à 15:05:34
n°1180773
AlainTech
Pas trouvé? Cherche encore!
Posté le 21-08-2005 à 18:32:37  profilanswer
 

L'erreur 1004 vient souvent d'un indice qui n'existe pas.
 
Dans ton cas, très certainement, NBL prend la valeur 0.
 
En vérifiant ta ligne, je vois un espace entre Area et le s qui suit.
Si tu as fait un copier/coller, l'erreur peut venir de là.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1180797
oaglas
Posté le 21-08-2005 à 18:44:04  profilanswer
 

Non l'espace en question ne figure pas dans le code, il s'agit d'un copier-coller malheureux et NBL contient la bonne valeur, le pb vient d'ailleurs ; j'ai déjà eu a insérer une formule dans une cellule via vba et leur construction était bien plus complexe, mais je pige pas.
 
Pour répondre à olivthill, PRECEDE est une fonction personnalisée et c'est pour cette raison que tu ne la trouveras pas dans ta version et ce qu'elle fait est spécifique au classeur sur lequel je travaille ; grosso-modo, elle détermine la ligne précédente de la ligne courante en fonction de critères variables ; sortie de ce contexte, elle n'a aucun intérêt.
 

n°1180800
oaglas
Posté le 21-08-2005 à 18:46:36  profilanswer
 

En me relisant je réalise une erreur qui pourrait prêter à confusion : je veux dire que la copie de formules via vba ne m'a jamais posé de problème jusqu'alors et que par contre cette fois-ci je sèche.

n°1180827
AlainTech
Pas trouvé? Cherche encore!
Posté le 21-08-2005 à 18:59:13  profilanswer
 

Je persiste à dire que ce n'est pas la formule qui pose problème mais bien un indice qui passe à 0 là où il ne devrait pas.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1180848
oaglas
Posté le 21-08-2005 à 19:13:59  profilanswer
 

Je veux bien te croire, mais il se trouve que j'ai vérifié les arguments et je n'ai rien trouvé de ce type. J'ai réalisé un exemple assez succint qui fixe le pb. Comment puis-je l'ajouter en pièce jointe sur le forum (ce n'est peut être pas autorisé) ?

n°1180854
galopin01
Posté le 21-08-2005 à 19:22:18  profilanswer
 

bonjour,
tu peux passer une pièce jointe ici
A+

n°1180859
oaglas
Posté le 21-08-2005 à 19:29:23  profilanswer
 

Ok voici l'exemple :
 
http://cjoint.com/?ivutc3Tbqs
 
Merci par avance pour toute suggestion.

n°1180863
oaglas
Posté le 21-08-2005 à 19:34:24  profilanswer
 

Il y a une petite erreur dans la zone commentaire du classeur précédent, correction :  
 
http://cjoint.com/?ivuyq1fS2J
 

mood
Publicité
Posté le 21-08-2005 à 19:34:24  profilanswer
 

n°1180871
oaglas
Posté le 21-08-2005 à 20:09:24  profilanswer
 

Hé j'ai ma solution : il suffit de remplacer le point virgule dans cette ligne :
 
Formule = Formule & ";" & Cells(Selection.Areas(i).Row, 7).Address  
 
par une virgule  
 
Formule = Formule & "," & Cells(Selection.Areas(i).Row, 7).Address  
 
Merci encore à MichelXld (Excel Download) à qui je dois cette solution. Bonne nuit les enfants.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Selection problématique

 

Sujets relatifs
Passer un tableau à 2 dimension via le VB/VBA à une DLL C/C++Menu en VBA
Conditions avec VBATaitement d'une liste de selection
Accès aux éléments d'une liste de sélection[VBA] Sauvegarder tout sauf les .gif et les .bmp
Protection projet VBA[VBA - Word]: Lancer une macro en mode console
[VBA Excel - resolu] ajout d'une feuilleboucle selection condition excel
Plus de sujets relatifs à : [VBA] Selection problématique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR