Problème d'affichage de feuille

frtoussaint

XLDnaute Nouveau
Bonjour,
Je suis sur Excel 2004 (mac) et j'ai un petit bug que je n'arrive pas à résoudre.
Explication :
J'ai une page de facturation sur laquelle j'ai un bouton "ajouter clients" qui ouvre un userform pour encoder mes nouveaux clients.
Le bouton "enregistrer" dans mon userform est sensé transferer les données encodées dans la feuille "clients" et revenir à la feuille "facture".

Ça bugg lors du retour à la feuille facture. Je ne comprends pas pourquoi, mais il ne veut pas réafficher la feuille facture.

Et dans mes souhaits les plus chers, j'aimerais que la cellule B9 (de ma feuille facture) affiche le nom du dernier client que je viens d'ajouter.
LA cellule B9 est une liste par validation qui fait référence à ma colonne A de ma feuille "clients".

Voici le code de mon userform pour l'enregistrement de mes nouveaux clients.

Code:
Private Sub CommandButton1_Click()
num = Sheets("Clients").Range("A65535").End(xlUp).Row + 1
Sheets("Clients").Activate
Range("A" & num).Value = TextBox1.Value
Range("B" & num).Value = TextBox2.Value
Range("C" & num).Value = TextBox3.Value
Range("D" & num).Value = TextBox4.Value
Range("E" & num).Value = TextBox5.Value
Range("F" & num).Value = TextBox6.Value
Range("G" & num).Value = TextBox7.Value
Range("H" & num).Value = TextBox8.Value
Range("I" & num).Value = TextBox9.Value
Range("J" & num).Value = TextBox10.Value

Unload UsfNew
Sheets("facture").Select
Range("B9").Select
End Sub

Si quelqu'un peut m'aider et me dire déjà ce que j'écris mal dans mon code.
J'ai aussi essayé avec Sheets("facture").Activate; avant et après le unload, mais rien à faire... ça bug toujours au même endroit avec une Run-Time error '32809' "Application-defined or object-defined error"

D'avance, merci beaucoup.

François
 

Pierrot93

XLDnaute Barbatruc
Re : Problème d'affichage de feuille

Bonjour François

essaye peut être ainsi, sans les "select", rarement indispensable en vba :

Code:
Option Explicit
Private Sub CommandButton1_Click()
With Sheets("Clients")
    num = .Range("A65535").End(xlUp).Row + 1
    .Range("A" & num).Value = TextBox1.Value
    .Range("B" & num).Value = TextBox2.Value
    .Range("C" & num).Value = TextBox3.Value
    .Range("D" & num).Value = TextBox4.Value
    .Range("E" & num).Value = TextBox5.Value
    .Range("F" & num).Value = TextBox6.Value
    .Range("G" & num).Value = TextBox7.Value
    .Range("H" & num).Value = TextBox8.Value
    .Range("I" & num).Value = TextBox9.Value
    .Range("J" & num).Value = TextBox10.Value
End With
Unload Me
End Sub

code à placer dans le module de ton USF. Pour contre comprends pas trop, si le nom de la feuille est bien le bon, cela devrais fonctionner... Maintenant perso, pas d'experience mac...

bonne fin d'après midi
@+
 

Cousinhub

XLDnaute Barbatruc
Re : Problème d'affichage de feuille

Bonsoir,

Bonsoir, Pierrot.... :)

Pour compléter la réponse de Pierrot, avec une boucle, et une liste de validation qui te donne tous tes clients en cellule B9, par liste de validation...

Code:
Private Sub CommandButton1_Click()
Dim I As Byte, Num As Long
Dim MesClients As Object
Dim tmp, temp
Set MesClients = CreateObject("Scripting.Dictionary")
With Sheets("Clients")
    Num = .Range("A65535").End(xlUp).Row + 1
    For I = 1 To 10
        .Cells(Num, I).Value = Me.Controls("TextBox" & I).Value
    Next I
    For I = 2 To Num + 1
        If Not MesClients.Exists(.Cells(I, 1).Value) Then _
            MesClients.Add .Cells(I, 1).Value, .Cells(I, 1).Value
    Next I
    temp = Application.Transpose(MesClients.items)
    For I = 1 To MesClients.Count
        tmp = tmp & "," & temp(I, 1)
    Next I
    tmp = Right(tmp, Len(tmp) - 1)
End With
With [B9].Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=tmp
End With
Unload Me
End Sub
 

frtoussaint

XLDnaute Nouveau
Re : Problème d'affichage de feuille

Salut,
Merci à tous les deux pour vos réponses rapides.

Pierrot, ton code fonctionne à merveille... manquait juste la ligne :
Code:
Dim Num as a long
Une fois ça ajouté à ton code, même sur mac, ça marche parfaitement. Merci beaucoup.

Bhbh,
J'ai essayé... ça semblait cool... mais je pense que ton code n'est pas supporté par Mac. Ça bugg à la ligne
Code:
Set MesClients = CreateObject("Scripting.Dictionary")
Dommage. bel essai... (et quelle merde Office pour Mac)
J'ai essayé sur PC et ça marche par contre et ça donne exactement le même résultat que le code de Pierrot.

Bref... je suis pas mal comblé... merci beaucoup à vous deux pour votre efficacité.

François
 

Discussions similaires

Statistiques des forums

Discussions
312 167
Messages
2 085 894
Membres
103 021
dernier inscrit
Sergyl75