Problème pour utiliser la fonction split

Problème pour utiliser la fonction split - VB/VBA/VBS - Programmation

Marsh Posté le 22-12-2008 à 20:05:28    

Bonjour à tous,
Je ne m'y connait pas trop en VBA mais j'essaye de faire un macro tout simple pour rendre service à un ami
Dans une tableau de 106 lignes et pouvant avoir jusqu'à 10000 colonnes toutes les cellules sont sous la forme nom_de_l'argument=valeur et je voudrais retiré la partie avant le "=" ("=" compris )
Voila le programme que j'ai tapé:  
 

Code :
  1. Dim TabRes As Variant, i As Integer, j As Integer
  2.        
  3.        
  4.         i = 1
  5.         j = 2
  6.     Do While j <> 10000
  7.         Do While i <> 107
  8.         TabRes = Split(Cells(i, j), "=" )
  9.        
  10.         Cells(i, j) = TabRes(1)
  11.         i = i + 1
  12.         Loop
  13.     j = j + 1
  14.     Loop


 
Il marche pour la première colonne (enfin la deuxieme, la premiere contenant le titre de chaque ligne) et plante avec le message "l'indice n'appartient pas à la selection" sur la ligne 10 et ne touche pas aux autres colonnes.  
Comment peut on gérer les erreurs en VBA? Existe-t-il un équivalent au système try=>catch du cpp?
Merci d'avance, Joyeuse Fêtes.

Reply

Marsh Posté le 22-12-2008 à 20:05:28   

Reply

Marsh Posté le 22-12-2008 à 22:22:08    

gestion d'erreur : on error goto label
 
sinon pour faire ca proprement, un if Len(TabRes) = 0 then Exit do... length pe me souvient pas exactement et tu devrais déclarer ton TabRes comme tableau de chaine de char ...
 
 
dim TabRes() as string


Message édité par satirik le 22-12-2008 à 22:23:04
Reply

Marsh Posté le 23-12-2008 à 00:40:12    

Merci pour ta réponse,
j'ai remplacé la ligne 10 par:
       If Len(TabRes) = 0 Then Cells(i, j) = ""
        Else: Cells(i, j) = TabRes(1)
        End If
et il me repond "else sans if" j'avoue avoir du mal à comprendre comment fonctionne ce compilateur

Reply

Marsh Posté le 23-12-2008 à 09:30:43    

Bonjour,
 
la structure du if then else est la suivante
 
If ... Then
  action 1
else
  action2
end if
 
dans ton cas il faut ecrire :
 If Len(TabRes) = 0 Then
 Cells(i, j) = ""
        Else: Cells(i, j) = TabRes(1)
        End If

Reply

Marsh Posté le 23-12-2008 à 09:36:16    

Voila le vba réduit
 
 

for j=2 to 10000
  for i=1 to 107
    Cells(i, j) =Split(Cells(i, j), "=" )(1)
  next i
next j

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed