Facture automatique

Bonsoir tous le monde,

Avant de mettre mon classeur en pièce jointe, est-il possible de :

Classeur 2 possede une seule feuil qui s'appel "facture"

Classeur 1 possede + de 20 feuil dont une qui s'appel "facture"

J'ai besoin de savoir si c'est possible que quand mes deux classeurs sont ouvert, et que je me rend sur classeur 2, d'exporter certaine cellule sur le classeur 1 et en particulier sur la feuil facture?

A savoir que le modele facture du classeur 2 est identique au modele facture du classeur 1?

Si cela vous semble possible, je met alors en ligne mon classeur.

Merci d'avoir pris le temps de me lire.


Voila en pièce jointe les deux classeurs.

Alors pour mieux comprendre,

La facture F0385 est situé sur mon disque dur.

J'ai besoin que quand je l'ouvre et que je clique sur le bouton, ca me recopie les cellules en jaunes automatiquement dans le classeur nouvelle facture et sur la feuil facture.

L'ideal serait l'inverse, c'est à dire que j'ouvre uniquement le classeur nouvelle facture, et sur la feuille facture j'ai un bouton que quand je clique dessus, ca me demande de selectionner une facture sur mon dd (ici la F0385) et en validant, les cellules se recopies.

C'est possible ca?

137nouvelle-facture.xlsm (73.93 Ko)
130facture-f0385.xlsm (73.35 Ko)

J'ai trouvé ce code sur un forum, mais alors impossible de l'adapter à mon classeur.

Sub ExtractionDonnees3()
Dim SearchString As String
Dim SearchChar As String
Dim MyPos As Integer
j = 2
NomFichierOrigine = "blabla"
Dim Wbk1 As Workbook, Wbk2 As Workbook
Set Wbk1 = ThisWorkbook
Set Wbk2 = Workbooks.Open(FileName:="C:\Documents and Settings\ba\Bureau\laboratoire excel\" & NomFichierOrigine & ".xls" )

For l = 3 To 29
Windows(NomFichierOrigine & ".xls" ).Activate
Wbk2.Sheets(l).Select
Rows("7:20" ).Select
With Selection
Set C = .Find("Cumul", LookIn:=xlValues, MatchCase:=False)
Columns(C.Column).Select
NumCol = C.Column

For i = 14 To 260

    If Cells(i, C.Column) > 0 Then

        Wbk1.Worksheets(3).Cells(j, 1).Value = Wbk2.Worksheets(l).Cells(i, 3).Value

        Wbk1.Worksheets(3).Cells(j, 2).Value = Wbk2.Worksheets(l).Cells(i, NumCol).Value

        Wbk1.Worksheets(3).Cells(j, 3).Value = Wbk2.Worksheets(l).Cells(i + 1, NumCol).Value

        Wbk1.Worksheets(3).Cells(j, 4).Value = Wbk2.Worksheets(l).Cells(4, 4).Value

        i = i + 1
        j = j + 1

    End If
Next i
End With

Next l

Windows("essai.xls" ).Activate
Sheets(3).Select

For k = 2 To j - 1

    SearchString = Cells(k, 1).Text
    SearchChar = "("
    MyPos = InStr(1, SearchString, SearchChar, 0)

    'si la ligne est vide on est à la fin des données extraites donc fin de boucle
        If Cells(k, 1).Text = "" And Cells(k, 2).Text = "" And Cells(k, 3).Text = "" And Cells(k, 4).Text = "" Then
    k = j - 1

    'si la case ne commence pas par une parenthèse alors la ligne ne nous intéresse pas, on la supprime
    ElseIf MyPos <> 1 Then
        Rows(k).Select
        Selection.Delete Shift:=xlUp
        k = k - 1

    'si la 4eme case est vide, les données viennent d'un onglet de synthèse qui ne nous intéresse pas, on supprime la ligne
    ElseIf Cells(k, 4).Text = "" Then
        Rows(k).Select
        Selection.Delete Shift:=xlUp
        k = k - 1

    ' si ca commence par une parenthèse, ca nous intéresse, on prends le numéro du département dans la parenthèse
    Else: Cells(k, 1) = Mid(Cells(k, 1).Text, 3, 3)

    End If
Next k

CopieTableau  'copie vers un fichier d'archivage

End Sub 

Bonsoir tous le monde,

personne pour m'aider,

Bonsoir tous le monde,

Je suis etonné de ne pas encore avoir eu une aide. Ca doit etre les vacances d'été non?

Bon j'essai encore de trouver la solution mais honnetement je galere mais alors enormement.

Merci d'avance;

Bonjour,

Voici une proposition pour effectuer le traitement depuis le classeur nouvelle facture.

Sur la feuille facture le bouton permet d'ouvrir une boite de dialogue afin de sélectionner le fichier source (F0385 ou autre).

La copie des cellules se fait directement après ouverture de ce fichier source.

A+

116nouvelle-facture.xlsm (46.41 Ko)

bonjour tous le monde, bonjour Frangy,

Merci pour ta version ca fonctionne nikel, merci

Par contre les cellule E21:G31 ne se recopie pas? pourtant elle sont bien indiqué dans ton code.

Oups !

C'est le redimensionnement (Resize) qui est en trop sur cette ligne de code :

WsC.Range("B21:G31").Resize(, 3).Value = WsS.Range("B21:G31").Resize(, 3).Value

A remlacer par

 WsC.Range("B21:G31").Value = WsS.Range("B21:G31").Value

A+

Magnifiqueeeeeee merciiiii bcp !


Ah derniere question, si j'ai envie d'aterrir dans un dossier specifique de mon disque dur en cliquant sur le bouton, je rajoute mon code ou?

"g:\ste\jn\Facturation\Facturation chantier\"

Bonjour,

Au tout début du code, sous les DIM ou juste avant la ligne qui contient "...GetOpenFilename..."

ChDrive "G"
ChDir "g:\ste\jn\Facturation\Facturation chantier\"

Gelinotte

Merciiiiiiiiiii Gelinotte,

ca fonctionne nickel

Rechercher des sujets similaires à "facture automatique"