Problème avec .AutoFill

aziz_alg80 Messages postés 383 Date d'inscription vendredi 12 février 2010 Statut Membre Dernière intervention 3 juin 2024 - 24 mai 2024 à 21:44
Willzac Messages postés 266 Date d'inscription mercredi 27 septembre 2017 Statut Membre Dernière intervention 20 juin 2024 - 20 juin 2024 à 14:42

Bonjour tout le monde;

J’ai le code suivant :

Private Sub UserForm_initialize()

'Incrémenter le ID_ACHAT

'-------------------------

    Dim i As Integer

    i = Sheets("ACH").Range("A" & Rows.Count).End(xlUp).Row

    Sheets("ACH").Select

    Range("A" & i).Select

    Selection.AutoFill Destination:=Range("A" & i & ":A" & i + 1), Type:=xlFillDefault

    TB1.Text = Sheets("ACH").Range("A" & i + 1)

End Sub

Ce code (à l’initialisation du UserForm) sélectionne la dernière cellule non vide sur la colonne « A » de la feuille « ACH », incrémente sa valeur, et par la suite transmet la valeur incrémentée à la TextBox « TB1 » du même user forme.

Exécuté séparément, ce code marche bien comme il faut, mais quand ce UserForm est appelé par un autre Userforme ça plante, et affiche le message d’erreur :

Erreur d’exécution 2147417848 - L’objet invoqué s’est déconnecté de ses clients.

D’après plusieurs essais, il m’est avéré que le problème se trouve au niveau de la ligne :     Selection.AutoFill Destination:=Range("A" & i & ":A" & i + 1), Type:=xlFillDefault

Y a-t-il quelqu’un qui connait l’origine de ce problème ?

Merci d’avance


Windows / Chrome 109.0.0.0

1 réponse

Willzac Messages postés 266 Date d'inscription mercredi 27 septembre 2017 Statut Membre Dernière intervention 20 juin 2024 14
Modifié le 20 juin 2024 à 14:44

Bonjour,

Si on utilise deux Userform, il faut utiliser des variables Public et vu que les Userform utilise Private, la liaison de tes Userform  n'est pas faite.

Je vous conseille de recuperer le l'adresse de la reference Selection dans une cellule.

Exemple:

'Userform1

Range("D100") = Selection.address

Range("D101") = i

'Userform2 qui fait appel à la valeur

range(Range("D100")).AutoFill Destination:=Range("A" & range("D101") & ":A" & range("D101") + 1), Type:=xlFillDefault

Je ne sais pas si vous avez compris