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

VB 6 et antérieur Discussion :

ecrire dans une feuille non active d'excel


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 3
    Points
    3
    Par défaut ecrire dans une feuille non active d'excel
    j'aimerai savoir si il serai possible d'envoyer des valeurs dans un feuilles non active d'excel.

    je vous join pour cela mon code:

    en premier lieu, déclaration d'excel:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim listprog As New Excel.Application
    Dim wk As Workbook
    Dim sh As Worksheet
    If txtline.Text <> "" And IsNumeric(txtline.Text) = True Then
     
    listprog.Visible = True
    Set wk = listprog.Workbooks.Add
    Set sh = wk.Worksheets.Add
    puis envoi dans excel

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Numero_colonne = 1
    saut = txtline.Text - 1
     
        sh.Cells(1, Numero_colonne).Value = "n°card"
        sh.Cells(1, Numero_colonne).Font.Bold = True
        sh.Cells(1, Numero_colonne).Borders.Weight = Excel.XlBorderWeight.xlMedium
        sh.Cells(1, Numero_colonne).HorizontalAlignment = Excel.xlHAlignCenter
        sh.Cells(1, Numero_colonne + 1).Value = "n°prog"
        sh.Cells(1, Numero_colonne + 1).Font.Bold = True
        sh.Cells(1, Numero_colonne + 1).Borders.Weight = Excel.XlBorderWeight.xlMedium
        sh.Cells(1, Numero_colonne + 1).HorizontalAlignment = Excel.xlHAlignCenter
     
    For o = 0 To frmgstprog.lstprog.ListCount - 1
    If o Mod (saut) = 0 And o >= saut Then
        Numero_colonne = Numero_colonne + 2
     
        sh.Cells(1, Numero_colonne).Value = "n°card"
        sh.Cells(1, Numero_colonne).Font.Bold = True
        sh.Cells(1, Numero_colonne).Borders.Weight = Excel.XlBorderWeight.xlMedium
        sh.Cells(1, Numero_colonne).HorizontalAlignment = Excel.xlHAlignCenter
        sh.Cells(1, Numero_colonne + 1).Value = "n°prog"
        sh.Cells(1, Numero_colonne + 1).Font.Bold = True
        sh.Cells(1, Numero_colonne + 1).Borders.Weight = Excel.XlBorderWeight.xlMedium
        sh.Cells(1, Numero_colonne + 1).HorizontalAlignment = Excel.xlHAlignCenter
    End If
     
     
            l = o Mod (saut) + 2
            sh.Cells(l, Numero_colonne).Value = Left(frmgstprog.lstprog.List(o), InStrRev(frmgstprog.lstprog.List(o), "_") - 4)
            sh.Cells(l, Numero_colonne).Borders.Weight = Excel.XlBorderWeight.xlThin
            sh.Cells(l, Numero_colonne).Borders(Excel.XlBordersIndex.xlEdgeLeft).Weight = Excel.XlBorderWeight.xlThick
            sh.Cells(l, Numero_colonne + 1).Value = Right(frmgstprog.lstprog.List(o), Len(frmgstprog.lstprog.List(o)) - InStrRev(frmgstprog.lstprog.List(o), "_"))
            sh.Cells(l, Numero_colonne + 1).Borders.Weight = Excel.XlBorderWeight.xlThin
            sh.Cells(l, Numero_colonne + 1).Borders(Excel.XlBordersIndex.xlEdgeRight).Weight = Excel.XlBorderWeight.xlThick
    Next o
        sh.Cells.EntireColumn.AutoFit
    Set wk = Nothing
    Set sh = Nothing
    si quelqu'un pourrait trouver comment envoyer dans une feuille non active, car dans mon cas si l'utilisateur change de feuille durant le transfert le programme fait une erreur.
    merci d'avance pour vos reponses

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par baboo50
    si l'utilisateur change de feuille durant le transfert le programme fait une erreur.
    Je n'ai jamais eu le cas avec la façon dont tu travailles mais tu peux essayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listprog.Visible = False
    Accessoirement, tu aurais pu nous poster le message d'erreur, ça nous aurait donné une indication.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    bon, si tu fais un envoi dans excel ou tu pourra essayer de changer de feuille excel pendant le transfert et tu constatera l'erreur suivante:

    Erreur d'execution '50290'
    erreur definie par l'application ou par l'objet

    cette erreur est presente tant que tu reviens pas sur la premiere feuille du classeur.

    essaye et dis moi si ta rien compris ou si tu as une solution

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    je comprend pas cette ligne.. et c'est là que ça coince

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For o = 0 To frmgstprog.lstprog.ListCount - 1
    frmgstprog ?
    lstprog ?

    Cela dit, pour être sur que tu met tes données sur la bonne feuille tu pourrais modifier....

    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
    Dim a$
    'If txtline.Text <> "" And IsNumeric(txtline.Text) = True Then
     
    listprog.Visible = True
    Set wk = listprog.Workbooks.Add
    Set sh = wk.Worksheets.Add
     
    a$ = sh.Name
     
    Numero_colonne = 1
    saut = 1
        With Worksheets(a$)
            .Cells(1, Numero_colonne).Value = "n°card"
            .Cells(1, Numero_colonne).Font.Bold = True
            .Cells(1, Numero_colonne).Borders.Weight = Excel.XlBorderWeight.xlMedium
            .Cells(1, Numero_colonne).HorizontalAlignment = Excel.xlHAlignCenter
            .Cells(1, Numero_colonne + 1).Value = "n°prog"
            .Cells(1, Numero_colonne + 1).Font.Bold = True
            .Cells(1, Numero_colonne + 1).Borders.Weight = Excel.XlBorderWeight.xlMedium
            .Cells(1, Numero_colonne + 1).HorizontalAlignment = Excel.xlHAlignCenter
        End With
    la même façon pour la suite..
    A+

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a$ = sh.Name
    Worksheets(a$)
    ...


    garde ton sh ... ! avec cette syntaxe l'on ne sait pas à quel classeur appartient la collection Worksheets !



    Citation Envoyé par baboo50
    ....
    essaye et dis moi si ta rien compris ou si tu as une solution
    essaie plutôt de nous dire sur qu'elle ligne survient l'erreur...

  6. #6
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    bon tout d'abord ta methode avec les a$ ne marche pas et engendre meme d'autre probleme, mais merci tout de meme.

    autrement je viens de remarquer que si je lance le debugage de l'application au moment de l'erreur et que je relance l'application alors a ce moment il continu a envoyer dans la feuille inactive.
    ceci me fait penser que c'est l'operation de changer de feuille qui fait bugger le programme. je pense alors qu'il faudrait faire une gestion d'erreur qui fera oublier ce changement de feuille et permettra au programme de continuer en reprennant la ou il en etait.

    le petit probleme pour moi c que je sais faire des gestion d'erreur mais je ne sais pas comment dire a vb de reprendre la ou il en etait.

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    dans tout les cas l'erreur survient sur les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sh.Cells(1, Numero_colonne).Value = "n°card"
        sh.Cells(1, Numero_colonne).Font.Bold = True
        sh.Cells(1, Numero_colonne).Borders.Weight = Excel.XlBorderWeight.xlMedium
        sh.Cells(1, Numero_colonne).HorizontalAlignment = Excel.xlHAlignCenter
        sh.Cells(1, Numero_colonne + 1).Value = "n°prog"
        sh.Cells(1, Numero_colonne + 1).Font.Bold = True
        sh.Cells(1, Numero_colonne + 1).Borders.Weight = Excel.XlBorderWeight.xlMedium
        sh.Cells(1, Numero_colonne + 1).HorizontalAlignment = Excel.xlHAlignCenter
    mais a chaque fois sur une ligne differente

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par baboo50
    ...
    mais a chaque fois sur une ligne differente
    sur ..?

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    bon je viens de faire de nombreux essais je suis tomber sur tout les cas de figures ca ve dire que le programme fait une erreur sur l'une des 6 lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
             sh.Cells(l, Numero_colonne).Value = Left(frmgstprog.lstprog.List(o), InStrRev(frmgstprog.lstprog.List(o), "_") - 4)
            sh.Cells(l, Numero_colonne).Borders.Weight = Excel.XlBorderWeight.xlThin
            sh.Cells(l, Numero_colonne).Borders(Excel.XlBordersIndex.xlEdgeLeft).Weight = Excel.XlBorderWeight.xlThick
            sh.Cells(l, Numero_colonne + 1).Value = Right(frmgstprog.lstprog.List(o), Len(frmgstprog.lstprog.List(o)) - InStrRev(frmgstprog.lstprog.List(o), "_"))
            sh.Cells(l, Numero_colonne + 1).Borders.Weight = Excel.XlBorderWeight.xlThin
            sh.Cells(l, Numero_colonne + 1).Borders(Excel.XlBordersIndex.xlEdgeRight).Weight = Excel.XlBorderWeight.xlThick
    desole il ne se focalise pas sur une ligne mais il bloque sur une de ces 6 lignes a chaque fois, alors si vous avez une solution je vous remercierai de me la proposer car je nage pour le moment.

    et desole pour les balises code je ne savais pas que ca existait

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ? quelle est la valeur de numero_colonne.. au moment du crash ..?

    essai le pas à pas (F8) pour être sur de l'endroit du crash, c'est quand même bizarre qu'il change...!

  11. #11
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    bon ca depend du moment ou tu change de feuille car des que tu change de feuille il fait une erreur donc l'erreur peut se produire sur les 6 lignes du dernier message et sur n'importe quelle colonne.
    je ne pense pas que c'est un probleme de colonne mais plus de l'action 'changement de feuille excel'.

    j'espere avoir repondu a tes questions

    Aussi l'erreur se forme sur la ligne qu'il est en train d'executer, ca c'est pour t'expliquer pourquoi elle change de ligne a chaque fois.

    bizarrement en mode pas a pas le programme detecte aucune erreur quand je changais de page. parcontre il faut que je vous dise a la difference du lancement normal, le programme est a l'arret au moment du changement de feuille en pas a pas.

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Comme tu n'a mis que des bouts de codes il n'est pas possible de déterminer où se trouve ta routine, est-t'elle dans un module ou une feuille ?

Discussions similaires

  1. Ecrire dans une feuille excel
    Par redabadache3 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/07/2022, 00h47
  2. Utilisation du solver dans une feuille non active
    Par JonSnow dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2010, 14h27
  3. test sur une checkbox dans une feuille non active
    Par diude54 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/08/2009, 22h29
  4. Ecrire dans une feuille Excel
    Par ash_rmy dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 06/12/2007, 11h06
  5. [VBA-PP]Ecrire dans une feuille Excel
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 27/04/2006, 18h18

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