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.NET Discussion :

Copie de graphique (incohérence ?)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut Copie de graphique (incohérence ?)
    C'est peut être ce contexte festif qui me chamboule, mais je me retrouve à nouveau avec un soucis sur la copie de graphique. J'ai l'impression que le simple fait de changer de projet provoque des incohérence : un code qui fonctionne d'un côté ne fonctionne pas de l'autre alors qu'ils sont en beaucoup de points similaire.

    bref : voilà la bête (ise ?)

    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
    Clipboard.Clear()
                    xlrecep.Worksheets(i + 3).chartobjects("Graphique 3").Copypicture()
                    rngBKM.select()
                    rngBKM.paste()
                    rngBKM.InlineShapes.item(1).ScaleHeight = 60
                    rngBKM.InlineShapes.item(1).ScaleWidth = 60
                    Clipboard.Clear()
                    xlrecep.Worksheets(i + 3).chartobjects("Graphique 2").Copypicture()
                    rngBKM.select()
                    rngBKM.paste()
                    rngBKM.InlineShapes.Item(1).ScaleHeight = 60
                    rngBKM.InlineShapes.Item(1).ScaleWidth = 60
                    Clipboard.Clear()
                    rngBKM.insertafter(vbCrLf)
                    xlrecep.Worksheets(i + 3).chartobjects("Graphique 1").Copypicture()
                    rngBKM.select()
                    rngBKM.paste()
                    Clipboard.Clear()
    Dans ce cas là, quand je lances, ça ne me copie que le dernier graphique, le "Graphique 1", les autres n'y sont pas. Mais quand met en commentaire la dernière partie, de la ligne 14 à 18, les deux autres graphiques sont bien copiés et resizés. En mettant en commentaire tel ou tel partie du code, rien ne change mis à part ce que j'ai déjà dit. J'ai tenté un retour à la ligne par dépit pensant que ce dernier graphique venait en superposition sur les deux premiers, aucun changement...

    Edit : par pur hasard alors que je lisais un doc word, pendant un débug, j'ai vu les modifications en temps réel, il semblerait qu'une fois les deux premiers graphiques copier, la procédure de sélection sélectionne également les graphiques, qui sont alors écrasé lors du collage. J'ai aucune idée de pourquoi, aucune idée également de comment modifier mon code pour que ça fonctionne convenablement.

  2. #2
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Re édit :
    Dépité et surtout n'ayant rien d'autre a faire j'ai joué avec mon code, jusqu'à arriver à cette petite penser :

    "Il est peut être juste foutu de mémoriser des infos que je lui demande pas dans ma variable, il aurait une IA mineur qui lui permet juste de se dire : tient il met des trucs, faut le sélectionner. ou alors il est trop con et il change l'intérieur de mes variables juste pour faire plaisir à murphy"

    Banco ! Je lui est répété rngBKM = otab(j).range.Bookmarks.Item(mil(i)).Range qui je le rappelle est l'exact copie de ce qu'il y a 10 lignes aux dessus, et il a compris. Vivement les vacances ...
    Si quelqu'un à une explication plus rationnel, je suis preneur.

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    rebonjour et bonne fete...

    L'explication est celle que j'aurais du donne dans le le dernier poste :
    1/ Range (et ses variantes Document.Range ou Bookmark.Range) a le comporte suivant :
    - suite à initialisation par defaut entraine : creation d'un nouvel element vide et pointage sur ce Dernier ...
    - si initialisation explicite avec pointage : avec ses variantes Range(texte),
    Range.Insert,Range.Start etc....,range.gotonext etc.....

    2/ Range.Paste fait une seule operation :
    - operation Paste sur le dernier element pointe par range...


    Range.Paste ne fait pas les 2 operations (sous-entendues par nous helas) :
    - creer un nouvel element (ajout d'un nouvel element)
    - paster dedans..
    Malhereusement uniquement la 2eme operation...
    -...

    Conclusion :
    -pour creer un nouvel element il faut donc reinitialiser la variable range du Bookmark.
    -la reinitialisation cree un nouvel element ....=> VIDE ce qui est recherche...
    Tu noteras au passage Qu'il n'ya pas d'instruction :
    -BookMark.Range.Add()....

    ton code devrait etre :

    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
    39
    40
    41
    42
    43
    44
     
     'range du doc
            Dim rngDoc As WD.Range = oDoc.Range
     
            ' range BookMark
            ' qui contient l'UNIQUE InlineShape "paste"
            Dim rngBKM As WD.Range
     
            '---- CETTE ASSIGNATION CREE UNE NOUVEL ELEMENT VIDE DANS RANGE !!!!-----
            rngBKM = rngDoc.Bookmarks.Item("EAU").Range
     
     
            'Echelle
            Dim sc As Single = 50.0
     
     
            ' Worksheet 
            oSheet = oWorkBook.Worksheets(3)
            ' ChartObjects collection 
            Dim oCharts As XL.ChartObjects = oSheet.ChartObjects
     
            oCharts.Item("Graphique 3").CopyPicture()
            rngBKM.Select()
            rngBKM.Paste()
            rngBKM.InlineShapes.Item(1).ScaleHeight = sc
            rngBKM.InlineShapes.Item(1).ScaleWidth = sc
            Clipboard.Clear()
            oCharts.Item("Graphique 2").CopyPicture()
            rngBKM = rngDoc.Bookmarks.Item("EAU").Range
     
     
            rngBKM.Select()
            rngBKM.Paste()
            rngBKM.InlineShapes.Item(1).ScaleHeight = sc
            rngBKM.InlineShapes.Item(1).ScaleWidth = sc
            Clipboard.Clear()
     
            oCharts.Item("Graphique 1").CopyPicture()
            rngBKM = rngDoc.Bookmarks.Item("EAU").Range
            rngBKM.Select()
            rngBKM.Paste()
            rngBKM.InlineShapes.Item(1).ScaleHeight = sc
            rngBKM.InlineShapes.Item(1).ScaleWidth = sc
            Clipboard.Clear()
    bon code....

  4. #4
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Bonjour et bonne année également.
    Merci beaucoup. Le brouillard se désépaissi petit à petit, j'ai vraiment du mal avec Word, excel est bien plus intuitif et carré ^^'

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

Discussions similaires

  1. [XL-2003] Copie de graphiques
    Par Halzard dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 27/09/2009, 18h55
  2. Simple copie du texte d'une cellule excel dans le titre d'un graphique chart
    Par pinto_armindo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2007, 10h59
  3. ETAT: Incohérence entre le Graphique et les données
    Par Alain LF dans le forum Access
    Réponses: 1
    Dernier message: 02/05/2006, 09h49
  4. [VBA-E]Copie graphique de excel vers word
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2006, 10h49
  5. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56

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