IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Bouton efface et upload les données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 27
    Par défaut Bouton efface et upload les données
    Bonjour tout le monde

    J'ai un tableau de quelque lignes et colonnes

    c'est un tableau qui doit etre rempli par plusieurs utilisateurs, je veu que à chaque fois un utilisateurs ouvre le file, il rempli les données, quand une autre utilisateur arrive aprés, il appui sur un boutton, et tou les données deja saisie par le précedent s'envoi vers une base de donnée commune qui existe sur un fichier xls apart, et le tableau se vide pour que le deuxiéme puisse rentrer ses données à lui. et ainsi de suite.

    Comme ca vers la fin il suffit de consulter une seule base de donnée pour voir ce que chaque utilisateur à rentré.

    pour clarifier mon probléme, voici des exemples des fichier sources et destination avec explication dans chacun
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    à comprendre pour adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub CommandButton1_Click()
    Dim awbk As Workbook, wbk As Workbook
    Dim NewLig As Long
     
    Application.ScreenUpdating = False
    Set awbk = ThisWorkbook
    Set wbk = Workbooks.Open("C:\Users\user\Desktop\upload & clear destination.xls")
    With wbk.Sheets("Feuil1")   'feuille de destination
       NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
       .Range("A" & NewLig & ":C" & NewLig).Value = awbk.Sheets("Table 1").Range("A2:C2").Value
       awbk.Sheets("Table 1").Range("A2:B3").ClearContents
       .Range("D" & NewLig & ":L" & NewLig).Value = awbk.Sheets("Table 1").Range("E3:M3").Value
       awbk.Sheets("Table 1").Range("E3:L3").ClearContents
    End With
    wbk.Close True
    Set wbk = Nothing
    Set awbk = Nothing
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 27
    Par défaut
    Merci ennormément ca marche trés bien.

    Je suis pas un grand connaisseur de VBA mais j'arrive comême à improviser ton code proposé pour ma situation, cependant j'ai remarqué deux ptits souci:

    1/ je sais pas comment ajouter d'autre bouttons similaires pour les autres feuilles (Table 2, Table 3) de l'excel source, car quand je les ajoute et que j'y appui, ils renvoient les données de la (Table 1) au lieu d'envoyer les données de leurs feuille.

    2/ si un user oublie d'ecrire la date, donc case date vide dans la ligne correspondante du fichier destination, alors cette ligne s'ecrase lors de l'upload ( bouttonclick) suivant au lieu que la copie de données se fasse en bas.

    il serait donc utile d'y remédier par un msgbox insitant à remplir la date ( ou toute case orange ), si le chef cuisinier appui sur le fameux boutton sans qu'il n'écrit la date ou autre case.

    Merci ENORMEMENT encore une fois.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Archivage(ws As Worksheet)
    Dim wbk As Workbook
    Dim NewLig As Long
     
    Application.ScreenUpdating = False
    If Len(ws.Range("A2").Value) * Len(ws.Range("B2").Value) * Len(ws.Range("C2").Value) > 0 Then
       Set wbk = Workbooks.Open("C:\Users\user\Desktop\upload & clear destination.xls")
       With wbk.Sheets("Feuil1")   'feuille de destination
          NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
          .Range("A" & NewLig & ":C" & NewLig).Value = ws.Range("A2:C2").Value
          ws.Range("A2:B3").ClearContents
          .Range("D" & NewLig & ":L" & NewLig).Value = ws.Range("E3:M3").Value
          ws.Range("E3:L3").ClearContents
       End With
       wbk.Close True
       Set wbk = Nothing
    Else
       MsgBox "données manquantes"
    End If
    End Sub
    Sur chaque feuille, tu crée un bouton activeX et tu lui affecte le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
    Archivage Sheets("Table 1") 'Feuille Table 1
    'Archivage Sheets("Table 2") 'Feuille Table 2
    'Archivage Sheets("Table 3") 'Feuille Table 3
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 27
    Par défaut Ca marche
    Merci ca marche nickel.

    Cependant j'ai voulu que l'appuie sur le boutton copie la valeur d'une autre petite cellule : "M2" el le met dans "N" & NewLig dans le fichier de destination.

    voici la ligne que j'ai inseré dans le module standard pour faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("N" & NewLig).Value = ws.Range("M2").Value
    Le probléme c que dans la cellule destination "N" &NewLig je retrouve toujours #N/A au lieu de la valeurs qui a vraiment existé dans M2 source avant le click sur le boutton.

    Comment faire sachant que c la seule cellule qui me pose ce probléme, tout le reste se copie nickel. (Peut etre parceque c une cellule qui contien formule de SOMME(E2:M2) sachant que toute les cellule de cette intervalle contiennent à leur tours des formules RECHERCHEV(...))

    Merci infiniment.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je ne vois pas de problème sauf si tu as mal adapté ton fichier
    le #N/A pourrait venir de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range(A).value=Range(B).value
    dans le cas où range(A) est plus large que range(B)
    sinon, j'ai revérifié le code sur tes fichier, il fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Archivage(ws As Worksheet)
    Dim wbk As Workbook
    Dim NewLig As Long
     
    Application.ScreenUpdating = False
    If Len(ws.Range("A2").Value) * Len(ws.Range("B2").Value) * Len(ws.Range("C2").Value) > 0 Then
       Set wbk = Workbooks.Open("C:\Users\user\Desktop\upload & clear destination.xls")
       With wbk.Sheets("Feuil1")   'feuille de destination
          NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
          .Range("A" & NewLig & ":C" & NewLig).Value = ws.Range("A2:C2").Value
          ws.Range("A2:B3").ClearContents
          .Range("N" & NewLig).Value = ws.Range("M2").Value
          .Range("D" & NewLig & ":L" & NewLig).Value = ws.Range("E3:M3").Value
          ws.Range("E3:L3").ClearContents
       End With
       wbk.Close True
       Set wbk = Nothing
    Else
       MsgBox "données manquantes"
    End If
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. bouton annuler pour effacer les données
    Par majduuus dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/09/2013, 09h53
  2. Réponses: 2
    Dernier message: 08/09/2006, 21h32
  3. effacer les données d'un fichier texte
    Par Shyboy dans le forum Langage
    Réponses: 7
    Dernier message: 28/06/2006, 13h23
  4. Effacer toutes les données d'une colonne
    Par denisfavre dans le forum Access
    Réponses: 5
    Dernier message: 12/10/2005, 15h20
  5. Réponses: 2
    Dernier message: 11/10/2005, 09h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo