Bug Erreur définie par l'application ou l'objet

designman Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je me remets sur VBA après quelques mois de pause et je m'arrache les cheveux sur un Bug Erreur définie par l'application ou l'objet.



Sub count_Process()

Dim Tier As Single
Dim tab_Tiers As Variant
Dim tab_resultats As Variant
Dim tab_nom As Variant

Dim v As Single

Tier = Range("B6")
tab_Tiers = Range(Cells(9, 2), Cells(9 + Tier, 5))
ReDim tab_resultats(2, Tier) As Variant


v = Sheets("Processing").Range("A2").End(xlDown).Row '- 1
ReDim tab_nom(v, 12) As Variant

'Tab_nom est une plage de données de V lignes et 12 colonnes


tab_nom = Sheets("Processing").Range(Cells(2, 2), Cells(v - 1, 13))


End Sub


ça bug justement à l'enregistrement des données tab_nom =

Si je rajoute une ligne pour ouvrir l'onglet "Processing" avant, ça marche comme prévu une seule fois puis ça me dit la methode Select a échoué.

Sheets("Processing").Select
tab_nom = Sheets("Processing").Range(Cells(2, 2), Cells(v - 1, 13))

Merci pour votre aide.

Configuration: Configuration: Configuration: Configuration: Windows / Chrome 102.0.0.0

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

tab_Tiers, tab_resultats, tab_nom deviennent du type au moment de leur affectation s'ils sont declares Variant
Donc tab_Tiers, tab_nom deviennent de type Range pas des Tableaux
Pour le remplissage de tab_nom, j'ai souvent le soucis que vous avez, je change de facon
Pour tab_Tiers, pas de probleme mais saurais pas dire pourquoi

Sub count_Process()

    Dim Tier As Single
    Dim tab_Tiers As Variant
    Dim tab_resultats As Variant
    Dim tab_nom As Variant
    
    Dim v As Single
    
    Tier = Range("B6")
    tab_Tiers = Range(Cells(9, 2), Cells(9 + Tier, 5))
    
    v = Sheets("Processing").Range("A2").End(xlDown).Row '- 1
    tab_nom = Sheets("Processing").Range("B2:L" & v - 1)
End Sub
0
designman Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beacoup f894009!!!!

Ta solution marche et c'est le principal. Tant que la variable est la ligne ça devrait marcher. Quid si c'est la colonne?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,
Colonne
L=12, mettre M pour 13

Quid si c'est la colonne?
Et avec votre code, la colonne est bien ecrite en dur avec votre 13
tab_nom = Sheets("Processing").Range(Cells(2, 2), Cells(v - 1, 13)

Si colonne flottante, pas de probleme pour avoir la derniere colonne en lettre
0
designman Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, sur cet exemple précis. Par contre quid de quand il faut une colonne variable, par ex:
tab_nom = Sheets("Processing").Range(Cells(2, 2), Cells(5, v) 
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > designman Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Re,
Oui, sur cet exemple précis.
Relisez la derniere ligne que j'ai ecrite, vous aurez la reponse
0