Sur ouverture classeur en VBA je n'ai pas la main

Bonjour, je craque : J'ai un ficher excel "Fichier 1" avec un Userform et un bouton " Bouton_Ajout_Fichier2" qui ouvre un "Fichier2" pour ajout d'une ligne.

J'ai 2 versions du Fichier1 avec ce même code :

  • Sur la première version, Fichier2 s'ouvre sur la première ligne vide (exemple, ligne 10) et je peux saisir sur Fichier2, le fermer et revenir sur Fichier1.
  • Sur la seconde version, Fichier2 s'ouvre sur la première ligne vide (exemple, ligne 10), et QUAND JE SAISIS, LA SAISIE S'EFFECTUE SUR FICHIER1 EN LIGNE 10

A l'aide quelqu'un saurait il me mettre sur piste sur ce qui pourrait causer ce comportement différent avec un même code ?

Voici la procédure :

Private Sub Bouton_Ajout_Fichier2_Click()

Unload Me

Workbooks.Open Filename:="c:\Users\xxx\xxx\Fichier2.xlsx"

LigVide = Range("A65536").End(xlUp).Row + 1

Range("A" & LigVide).Select

End Sub

Bonjour,

La première précaution à prendre, dans ce cas, est de nettoyer ta Colonne A ... des blancs et espaces .... pour re-tester ton code

Merci, James007, tu veux dire sur le Fichier2 ? le fichier2 est le même dans les 2 cas

Asio333 a écrit :

Merci, James007, tu veux dire sur le Fichier2 ? le fichier2 est le même dans les 2 cas

Je veux dire que le "nettoyage" des cellules "fantômes" est utile dans les deux fichiers ...

Ma colonne A ne contient ni espace ni vide dans les 2 fichiers, j'ai essayer la procédure sur un fichier1 sans aucune donnée, ça marche.

Bonjour,

En dehors du fait que tu vas dans le mauvais classeur comment peux-tu être sûr que la feuille active du classeur ouvert soit la bonne ? A part s'il en a qu'une c'est risqué...

Donc assure le coup en mettant ceinture et bretelles : utiliser des variables, activer la feuille.

A tester :

    Dim wk As Workbook, sh As Worksheet
    Set wk = Workbooks.Open("d:\tmp\Classeur3.xls")
    Set sh = wk.Sheets("Feuil1")
    With sh
        .Activate
        LigVide = .Range("A65536").End(xlUp).Row + 1
        .Range("A" & LigVide).Select
    End With

eric

Merci Eriiic mais résultat identique

essaie plutôt avec :

    With sh
        .select

Ceci dit, à l'ouverture un classeur est sensé être actif. S'il ne l'est pas c'est qu'un utilisateur ou une procédure en a activé un autre. Tu n'as pas d'évènementielle qui ferait ça ?

eric

Eriii, pas mieux.

Mais mon code initial fonctionne sur n'importe quel autre Userform ou fichier, sauf là, il faut trouver la cause, le code est pas faux

holala que c'est sioux pour moi encore le vba, mais cause enfin trouvée :

le formulaire était activé par un bouton sur le fichier mais le code avait été placé dans un module au lieu de la feuille.

J'ai fait un nouveau bouton sur ma feuille avec le code Userform1.show dans la feuille (au lieu d'un module) et ça marche.

Merci tout de même de votre aide.

Rechercher des sujets similaires à "ouverture classeur vba pas main"