Indice n' appartient pas à la selection

  • Initiateur de la discussion Initiateur de la discussion Aladin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Aladin

XLDnaute Occasionnel
Bonjour le forum

J' ai trouvé cette macro sur le forum et et je l' ai adapté à mon classeur. Il fonctionne mais j' ai un méssage d' érreur
.
Sub DernierSlash()

Dim Plage As Range
Dim Tableau As Variant
Dim C As Range
Dim DL As Long

With Sheets("Serveur")
DL = .Range("a65536").End(xlUp).Row
Set Plage = .Range("A32:A" & DL)
For Each C In Plage
Tableau = Split(C, "/") '
C.Offset(0, 5) = Tableau(UBound(Tableau))

Next
End With


Erreur d' execution 9
l' indice n' appartient pas à la séléction


Merci pour tout aide

Aladin
 
Re : Indice n' appartient pas à la selection

Bonjour le forum

J' ai trouvé cette macro sur le forum et et je l' ai adapté à mon classeur. Il fonctionne mais j' ai un méssage d' érreur
.
Sub DernierSlash()

Dim Plage As Range
Dim Tableau As Variant
Dim C As Range
Dim DL As Long

With Sheets("Serveur")
DL = .Range("a65536").End(xlUp).Row
Set Plage = .Range("A32:A" & DL)
For Each C In Plage
Tableau = Split(C, "/") '
C.Offset(0, 5) = Tableau(UBound(Tableau))

Next
End With


Erreur d' execution 9
l' indice n' appartient pas à la séléction


Merci pour tout aide

Aladin
Salut
J'ai l'erreur, mais pas forcément la solution :
Dim Tableau As Variant
Tu déclares une variable unique avec le nom de tableau
Dim Tableau() As Variant
Déclare une variable "tableau".
Mais il faut lui donner le(s) nombre(s) d'indice
Comme tu ne connait pas la dimension, tu est obligé d'attendre la définition de DL
ensuite
redim tableau(1 to DL-31)
Normalement, ça devrait être dans ces eaux là
A+
 
Dernière édition:
Re : Indice n' appartient pas à la selection

Bj,

J'explique comme je comprends .. et qqe fois je comprends point ;-)

Sub DernierSlash()

''Définit les variables
Dim Plage As Range
Dim Tableau As Variant
Dim C As Range
Dim DL As Long

'dans la feuille nommée classeur
With Sheets("Serveur")
'DL renvoi la valeur de la dernière ligne utilisée
DL = .Range("a65536").End(xlUp).Row

'définit la plage de travail entre A32 at A "dernière ligne :
'c'est sur la colonne A

Set Plage = .Range("A32:A" & DL)

'pour chaque cellule (C) de la plage

For Each C In Plage

'ici çà "split" (pas compris la fonction de tableau avec séparateur... çà met un / derrière le contenu le C ?)
'et çà place le résultat dans tableau ...

Tableau = Split(C, "/") '

'décale de 5 colonnes à droite (offset) et met dans la cellule le contenu de C
'devrait mettre la plus grande valeur de "tableau" mais pas réussi à le faire avec ce code
C.Offset(0, 5) = Tableau(UBound(Tableau))
Next ' cellule suivante
End With

end sub


Pas réussi à voir le code erreur

ai lancé le pas à pas (F8) ou exécution macro (F5)

j'ai mis qqes chiffres et texte de a32 à a .....
 
Re : Indice n' appartient pas à la selection

Bonsoir le fil, bonsoir le forum,

Comme le Chat je pense, Aladin, que ton fichier n'a pas d'onglet nommé Serveur. Adapte la macro en changeant le nom de l'onglet ou renomme l'onglet concerné Serveur et ça devrait marcher.
 
Re : Indice n' appartient pas à la selection

Bonjour The Cat 2007 et Robert et aussi le forum
Merci à vous deux d' avoir répondu

La feuille Serveur existe, la macro se déplace les données vers la colonne 5, mais il se plante à la fin sur "Erreur d' execution 9
l' indice n' appartient pas à la séléction
et j' ai ceci en jaune en faisant débogage
C.Offset(0, 1) = Tableau(UBound(Tableau))
Si je fais fin mon déplacement de données se fait correctement

Aladin
 
Re : Indice n' appartient pas à la selection

Bonour le fil, bonjour le forum,

Le problème pour pouvoir t'aider, Aladin, c'est qu'il faut qu'on se recrée ton univers avec des donnés factices qui ne correspondent pas forcément aux tiennes. Si tu avais envoyé un fichier exemple basé sur ton propre fichier ça permettrait d'aller bien plus vite. J'avoue que parfois j'ai la flemme et du coup je laisse ça à d'autres plus courageux...
 
Re : Indice n' appartient pas à la selection

bonjour Aladin
Salut Gorfael
Salut The Cat
Salut Robert

a mon avis la macro butte sur une cellule vide
verifier d'abord si DL n'est pas inferieur a 32
ensuite s'assurer qu'il n'y a pas de cellule vide dans le Range("A32:A" & DL)
 
Re : Indice n' appartient pas à la selection

Bonsoir tout le monde,
tu peux aussi essayé d'insérer
Code:
debug.print UBound(Tableau)
avant la ligne qui bug pour voir si ton tableau n' a pas un problème.
Ne pas oublié d'afficher la fenêtre d'execution (affichage - fenêtre execution) dans VBE.
A+
 
Re : Indice n' appartient pas à la selection

Bonsoir Aladin, le fil

Essaye comme ca :

Code:
Sub DernierSlash()

Dim Plage As Range
Dim Tableau
Dim C As Range
Dim DL As Long

With Sheets("Serveur")
  DL = .Range("a65536").End(xlUp).Row
  Set Plage = .Range("A32:A" & DL)
    For Each C In Plage
      Tableau = Split(C, "/")
        If UBound(Tableau) > 0 Then C.Offset(0, 5) = UBound(Tableau)
    Next
End With

End Sub

Cela renvoie le nombre de "/" de la cellule dans la colonne F, donc la position du dernier.
Le test If / Then permet d'éviter d'avoir -1 dans la colonne F, lorsque la cellule de la colonne A est vide.

Si j'ai bien compris ce que tu souhaites

Bonne soirée
 
Re : Indice n' appartient pas à la selection

Bonsoir à tous et aux autres

D'accord avec PierreJean : une cellule vide provoque l'erreur, tout comme un DL inférieur à 32.

En rajoutant :

Code:
For Each C In Plage
[COLOR=Red]If C = "" then Exit For[/COLOR]
Tableau = Split(C, "/") ' 
C.Offset(0, 5) = Tableau(UBound(Tableau))
la macro s'arrête à la première cellule vide rencontrée.


 
Re : Indice n' appartient pas à la selection

Re,

La même chose si tu veux récupérer les données après le dernier "/" et même si il y a des cellules vides dans la colonne A. C'est effectivement une cellule vide qui provoque l'erreur.

Code:
Sub DernierSlash()

Dim Plage As Range
Dim Tableau
Dim C As Range
Dim DL As Long

With Sheets("Serveur")
  DL = .Range("a65536").End(xlUp).Row
  Set Plage = .Range("A32:A" & DL)
    For Each C In Plage
      Tableau = Split(C, "/")
        If UBound(Tableau) > 0 Then C.Offset(0, 5) = Tableau(UBound(Tableau))
    Next
End With

End Sub
 
Re : Indice n' appartient pas à la selection

Bonsoir à vous tous
L' analyse de PierreJean était excellent et avec l' arrêt sur le premiere céllule vide, la macro fonctionne parfaitement sans méssage d' érreur.
Merci à vous tous
Aladin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
911
Réponses
2
Affichages
589
Retour