Remplire une feuille a sont lancement

bonjour, j'ai une feuille (reglement), je voudrais que celci se remplise quand on l'ouvre avec certaine données de mes base.

j'ai donc fais ce code mais qui pour le moment a deux problème (et peut etre plus) d'abbord il ne s'execute pas au lancement de ma feuille et il se plante avec le msg suivant ( erreur d'execution 9 , l'indice napartien pas a la sélection !)

les données que je souhaite affichées sont les suivante dans ma base_facture et ma base_commande je veut recupérr le type de doc (A2) puis le n° du doc qui se trouve dans la colonne A a partir de la 4 ieme ligne puis sur la même ligne que le numero du doc le nom ,la date du doc, l'acompte 1 , l'acompte 2 , le solde et le reste si tous n'est pas reglé car si le reste a regle est de zero la ligne est ignorée

pour le moment mon code est le suivant et ne demande qu'a évoluer avec votres aide.

Private Sub reglement_Open()
Dim cel As Range
Dim i, j As Integer
With Sheets("base_facture" & "base_commande")
  Set cel = .Columns("EB").Find(What:=">0,00", LookIn:=xlValues, Lookat:=xlWhole).End(xlUp) - 1
  If Not cel Is Nothing Then
  i = cel.Row
 j = Sheets("reglement").Range("A65536").End(xlUp).Row + 1
For j = 1 To 8

    .Cells(j, 1) = .Cells(2, 1)
    .Cells(j, 2) = .Cells(i, 1)
    .Cells(j, 3) = .Cells(i, 7)
    .Cells(j, 4) = .Cells(i, 2)
    .Cells(j, 5) = .Cells(i, 129)
    .Cells(j, 6) = .Cells(i, 130)
    .Cells(j, 7) = .Cells(i, 131)
    .Cells(j, 8) = .Cells(i, 132)
Next j

End If
 End With
Range("A1").Select
End Sub

merci d'avance.

Bonjour

Wouah que de fautes d'orthographes là... Prends pas cela mal mais tu devrais utiliser le correcteur orthographique qui te souligne un mot incorrect.

Bon pour ton souci, lorsque tu vois le message, tu dois avoir une ligne du code sur fond jaune. C'est à quel endroit ?? ici non ?? --> With Sheets("base_facture" & "base_commande")

Si oui, pourquoi fais-tu cela ??

A te relire

mon cher dan effectivement l'hortographe et moi cela fait deux d'ailleur d'habitude j'utilise un log de reconaissance vocale mais pour le momment suite a quelque souccis de santée je ne peut pas l'utillisé, donc je vais essayer de me relire pour en laisser moins .

pour mon problème il me met erreur 9 et rien de plus il ne surligne rien sinon tu peut me croire que je serais plus precis sur le pourquoi du comment. pour ce qui est de la ligne "with sheets("base_facture"&"base_commande") après avoir chercher par ci par la je l'ai réecrite comme suit : sheets("base_facture base_commande")

du fait que je veut une recherche dans ces deux base , maintenant je pense que mon problème vient de la ligne qui suit :

Set cel = .Columns("EB").Find(What:="value>0", LookIn:=xlValues, Lookat:=xlWhole).End(xlUp).Row

par cet ligne je souhaite recuperer dans mes deux base toute les lignes dont la valeur est suppérieur a zéro pour les inscrirent dans ma feuille reglement.

pour qu'il démarre j'ai placé mon code dans ma feuille reglement, faut-il que je le mette ailleurs au premier abbord je ne pense pas mais peut être que je me trompe.

ci-joint mon fichier pour que tu visualises

merci beaucoup pour l'intéret porté a mon sujet

21log-facture.xlsm (258.81 Ko)

j'ai encor modifier mon code et maintenant j'obtient erreur 438 propriété ou méthode non gerée par cet objet.

Private Sub reglement_Open()
Dim cel As Range
Dim i As Integer, j As Integer
With Sheets("base_facture") And ("base_commande")
    For i = 2 To .Range("EB" & Rows.Count).End(xlUp).Row
        If .Range("EB" & i).Value > 0 Then

 With Sheets("reglement")
 For j = 4 To .Range("A65000").End(xlUp).Row
    .Range("A", j) = .Range("A2")
    .Range("B", j) = .Cells(i, 1)
    .Range("C", j) = .Cells(i, 7)
    .Range("D", j) = .Cells(i, 2)
    .Range("E", j) = .Cells(i, 129)
    .Range("F", j) = .Cells(i, 130)
    .Range("G", j) = .Cells(i, 131)
    .Range("H", j) = .Cells(i, 132)
j = j + 1
Next j
End With
End If
Next i
End With

End Sub

merci pour votre aide

Bonjour

Ce n'est pas .Range("A", j) mais .Range("A" & j)

Les autres à corriger aussi bien sur

re , effectivement je tape , je tape ,je refléchi et je ne fait pas attention a ces détails et je te remerci pour ta remarque pertiante que j'ai bien évidament corriger !

j'ai aussi repris mon code car il me fallait identifier les document et leur provenance et maintenant cela fonctionne il ne me reste plus qu'a le faire executer quand on lance la page règlement mais la je câlle car même avec private sub reglement_Open() le code ne se lance pas quand la page est appeler sinon mon code cela donne ca :

Private Sub reglement_Open ()
' d'abbord j'efface les anciènnes donné
Sheets("reglement").Range("A4:I65536").Select
Selection.ClearContents
' jeu fait deux boucle pour selectionné les ligne superieur a zéro et je les intègre dans ma page reglement
Dim i As Integer, j As Integer
With Sheets("base_facture")
    For i = 4 To .Range("EB" & Rows.Count).End(xlUp).Row
        If .Range("EB" & i).Value > 0 Then

            j = Sheets("reglement").Range("A4").Range("A65536").End(xlUp).Row + 1
            Sheets("reglement").Range("A" & j) = .Cells(2, 1)
            Sheets("reglement").Range("B" & j) = .Cells(i, 1)
            Sheets("reglement").Range("C" & j) = .Cells(i, 7)
            Sheets("reglement").Range("D" & j) = .Cells(i, 2)
            Sheets("reglement").Range("E" & j) = .Cells(i, 3)
            Sheets("reglement").Range("F" & j) = .Cells(i, 129)
            Sheets("reglement").Range("G" & j) = .Cells(i, 130)
            Sheets("reglement").Range("H" & j) = .Cells(i, 131)
            Sheets("reglement").Range("I" & j) = .Cells(i, 132)

        End If
    Next i
End With

With Sheets("base_commande")
    For i = 4 To .Range("EB" & Rows.Count).End(xlUp).Row
        If .Range("EB" & i).Value > 0 Then

            j = Sheets("reglement").Range("A4").Range("A65536").End(xlUp).Row + 1
            Sheets("reglement").Range("A" & j) = .Cells(2, 1)
            Sheets("reglement").Range("B" & j) = .Cells(i, 1)
            Sheets("reglement").Range("C" & j) = .Cells(i, 7)
            Sheets("reglement").Range("D" & j) = .Cells(i, 2)
            Sheets("reglement").Range("E" & j) = .Cells(i, 3)
            Sheets("reglement").Range("F" & j) = .Cells(i, 129)
            Sheets("reglement").Range("G" & j) = .Cells(i, 130)
            Sheets("reglement").Range("H" & j) = .Cells(i, 131)
            Sheets("reglement").Range("I" & j) = .Cells(i, 132)

        End If
    Next i
End With
' enfin je sélection une page hors du cadre de visualistion dans ma page reglement.
Sheets("reglement").Range("J4").Select
End Sub

merci pour les remarques elle me permette de progresser.

Bonsoir

C'est quoi cette macro reglement_Open, elle est lancée à partir de quoi ?

Tu ne confonds pas avec WorkBook_Open ?

re , je voulais que quand ont ouvre la feuille reglement la macro qui sert a la remplir avec les données de mes base s'execute rien de plus , au vue de la question c'est que ce n'est pas comme cela qu'on fait

car j'ai mis reglement ' pour le nom de ma feuille et open() 'pour quand on l'ouvre

je sait c'est l'âne qui a fait cela c'est normal et puis comme on dit qui tente rien n'a rein et pour le moment j'ai tenté mais j'ai rein lol

merci

Bonsoir

Alors si c'est quand tu vas sur ta feuille c'est l'évènement Activate

Private Sub Worksheet_Activate()
' d'abbord j'efface les anciènnes donné
'Sheets("reglement").Range("A4:I65536").Select    ' Plus besoin de cette manière
Range("A4:I65536").Select    
Selection.ClearContents
' jeu fait deux boucle pour selectionné les ligne superieur a zéro et je les intègre dans ma page reglement
'.
'.
'.
End Sub

Je n'ai pas vérifié ta macro

j'ai modifier suivant tes indication et il ne se passe rien.

Private Sub Worksheet_Acivate()
Sheets("reglement").Unprotect
'Sheets("reglement").
Range("A4:I65536").Select
Selection.ClearContents
Dim i As Integer, j As Integer
With Sheets("base_facture")
    For i = 4 To .Range("EB" & Rows.Count).End(xlUp).Row
        If .Range("EB" & i).Value > 0 Then

            j = Sheets("reglement").Range("A4").Range("A65536").End(xlUp).Row + 1
            Sheets("reglement").Range("A" & j) = .Cells(2, 1)
            Sheets("reglement").Range("B" & j) = .Cells(i, 1)
            Sheets("reglement").Range("C" & j) = .Cells(i, 7)
            Sheets("reglement").Range("D" & j) = .Cells(i, 2)
            Sheets("reglement").Range("E" & j) = .Cells(i, 3)
            Sheets("reglement").Range("F" & j) = .Cells(i, 129)
            Sheets("reglement").Range("G" & j) = .Cells(i, 130)
            Sheets("reglement").Range("H" & j) = .Cells(i, 131)
            Sheets("reglement").Range("I" & j) = .Cells(i, 132)

        End If
    Next i
End With

With Sheets("base_commande")
    For i = 4 To .Range("EB" & Rows.Count).End(xlUp).Row
        If .Range("EB" & i).Value > 0 Then

            j = Sheets("reglement").Range("A4").Range("A65536").End(xlUp).Row + 1
            Sheets("reglement").Range("A" & j) = .Cells(2, 1)
            Sheets("reglement").Range("B" & j) = .Cells(i, 1)
            Sheets("reglement").Range("C" & j) = .Cells(i, 7)
            Sheets("reglement").Range("D" & j) = .Cells(i, 2)
            Sheets("reglement").Range("E" & j) = .Cells(i, 3)
            Sheets("reglement").Range("F" & j) = .Cells(i, 129)
            Sheets("reglement").Range("G" & j) = .Cells(i, 130)
            Sheets("reglement").Range("H" & j) = .Cells(i, 131)
            Sheets("reglement").Range("I" & j) = .Cells(i, 132)

        End If
    Next i
End With
Sheets("reglement").Range("J4").Select
Sheets("reglement").Protect
End Sub

alors que quand j'utilise via un bouton present dans ma page (recherche reglement) qui fait tourner la même macro appeler mis a jour le code fonctionne bien donc dans un deusième temps comme pour ateindre ma page reglement j'utillise un bouton nomé reglement j'ai bien penser via ce bouton lancer ma macro mais la c'est la ligne :

Sheets("reglement").Range("A4:I65536").Select
Selection.ClearContents

qui fait un planté et la encore j'ai du mal a comprendre

y a t'il une explication je pense que oui mais mes trop faible connaissances ne me permette pas d'expliquer !

merci

Bonjour

Cette macro doit être placée dans le module de la feuille

Le mieux c'est de joindre ton fichier

re elle est bien placer dans la feuille reglement pour que tu te rende compte voici mon fichier dans sa derniere version

merci

ps : les feuilles facture, recup, et reglement son protéger sans mot de passe

20log-facture.xlsm (265.39 Ko)

Bonjour

Il faut bien nommer la macro

tu as noté

Private Sub Worksheet_Acivate()

Il faut

Private Sub Worksheet_Activate()

Ta macro modifiée

Private Sub Worksheet_Activate()
Dim i As Long, j As Long

  ActiveSheet.Unprotect
  Range("A4:I65536").ClearContents
  With Sheets("base_facture")
    For i = 4 To .Range("EB" & Rows.Count).End(xlUp).Row
      If .Range("EB" & i).Value > 0 Then
        j = Range("A" & Rows.Count).End(xlUp).Row + 1
        Range("A" & j) = .Cells(2, 1)
        Range("B" & j) = .Cells(i, 1)
        Range("C" & j) = .Cells(i, 7)
        Range("D" & j) = .Cells(i, 2)
        Range("E" & j) = .Cells(i, 3)
        Range("F" & j) = .Cells(i, 129)
        Range("G" & j) = .Cells(i, 130)
        Range("H" & j) = .Cells(i, 131)
        Range("I" & j) = .Cells(i, 132)
        End If
    Next i
  End With

  With Sheets("base_commande")
    For i = 4 To .Range("EB" & Rows.Count).End(xlUp).Row
      If .Range("EB" & i).Value > 0 Then
        j = Range("A" & Rows.Count).End(xlUp).Row + 1
        Range("A" & j) = .Cells(2, 1)
        Range("B" & j) = .Cells(i, 1)
        Range("C" & j) = .Cells(i, 7)
        Range("D" & j) = .Cells(i, 2)
        Range("E" & j) = .Cells(i, 3)
        Range("F" & j) = .Cells(i, 129)
        Range("G" & j) = .Cells(i, 130)
        Range("H" & j) = .Cells(i, 131)
        Range("I" & j) = .Cells(i, 132)
      End If
    Next i
  End With
  Range("J4").Select
  ActiveSheet.Protect
End Sub

toute mes excuse mais comme l'affiche mon avatar j'en suis un beau par moment

il est vrais que comme cela cela fonctionne netement mieux

j'ai bientot fini ce logiciel pour mon beaufrère, il va pouvoir m'inviter au resto pour reprendre tous les calories perdu par le fonctionnement de mes neuronnes ( lol)

encore deux petit truc a faire et je suis sur que le forum seras mis a contribution pour identifier les bug éventuel, dans tous les cas merci beaucoup houps !! il est tard bonne nuit demaind boulot quand même

Rechercher des sujets similaires à "remplire feuille lancement"