Copie contenu cellule feuille1 vers feuille2

Résolu/Fermé
Evinrude44 - 9 juin 2008 à 12:04
 Evinrude44 - 11 juin 2008 à 16:19
Bonjour,

Quand on n'aime on ne compte pas, alors me revoilà.
J'ai une p'ti soucis avec une copie du contenu d'une cellule d'une onglet nommé pour la petite histoire "PRESENTATION" vers un autre nommé "GlobaMenu".


Voici le code

'---------------------------------------------------------------------------------------------------------------------------------------

Sub CommentAuto()
'
' Macro enregistrée le 05/06/2008

Call ListeFeuilles 'Appel d'une macro créant la feuille "PRESENTATION"

On Error GoTo FinProc


Dim CommentaireOnglet As String
Dim Nbr As Integer
Dim CompteurTemp As Integer
Dim saisie As Variant

Sheets("PRESENTATION").Select

For ligne = 2 To Sheets.Count

If Range("P" & ligne).Value = "" Then
saisie = InputBox("Tapez votre commentaire :", "Boite de saisie")
Range("P" & ligne).Value = saisie
'Range("A!GlobalMenu" & ligne).Value = Range("P" & ligne).Value
'["GlobalMenu"!A(ligne)] = ["PRESENTATION"!A(ligne)] <===========PLANTAGE !!!!!

End If

Next ligne


For J = 2 To Sheets.Count


Next J

For I = 3 To Sheets.Count

CommentaireOnglet = Range("P" & I - 1)

Range("B" & I).Select
Range("B" & I).AddComment
Range("B" & I).Comment.Visible = False
Range("B" & I).Comment.Text Text:=CommentaireOnglet & Chr(10) & ""

Next I

FinProc:

MsgBox ("Commentaire déjà présent !")

End Sub

'-----------------------------------------------------------------------------------------------------------------------------------------------
Mon problème est le suivant.

Je veux que les coemmentaires de associés à chaque ligne dans ma feuille "PRESENTATION" et stockés dans P(ligne)soient automatiquement stockés das un autre onglet dans des cellules allant de A(1) à A(ligne) avec ligne une variable liée au nombre d'onglets crée.
J'ai fait toute sorte d'essais en passant par la copie du style

copie du contenu cellule P(ligne)
sheets("GlobalMenu").select
collage au bon endraoit dans la feuille GlobalMenu

Et, et ça plante, l'erreur 1024 s'affiche cela vient du fait que je sélection en début de Macro la feuille PRESENTATION et que plus tard je selectionne une autre feuille.

JE SUIS PLANTE JE N'AI PLUS D'IDEE.

CE SERAIT CHOUETTE QUE QUELQU'UN ME DONNE UNE COUPE DE MAIN, UNE PISTE.
A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 juin 2008 à 12:27
Bonjour,

Je n'ai pas tout regardé mais il y a une mauvaise compréhension de la fonction "evaluate" ( les [ ]).Normalement cette fonction est utilisée pour la rédaction de formules matricielles en VBA.

Parce que ca évite d'écrire worksheets, range etc., elle est utilisée par "poil dans la main" (je l'utilise souvent!!!)

["GlobalMenu"!A(ligne)] = ["PRESENTATION"!A(ligne)]
en attendant evaluate renvoie la valeur, donc tu ne peux pas utiliser les crochets pour une variable (ou cellule) à laquelle tu affectes une valeur...
donc.

sheets("globalmenu").range("A" & ligne)= [.....

Maintenant, il y a peut-être d'autres choses...

Evite autant que faire se peut les "Sélect" qui ralentissent tout


Michel
0
Salut Michel,

Merci pour tes commentaires.
N'étant qu'un jeune débutant en excel, je fais des erreurs qui peuvent paraître simples mais il faut bien commencer par quelque chose.

Je viens de modifier le code conformémént à ton conseil et voilà ce que cela donne.

-----------------------------------------------------------------------------------------------------------------------------------------
macro enregistrée le 05/06/2008

'Call ListeFeuilles

On Error GoTo FinProc


Dim CommentaireOnglet As String
Dim Nbr As Integer
Dim CompteurTemp As Integer
Dim saisie As Variant

Sheets("PRESENTATION").Select

For ligne = 2 To Sheets.Count

If Range("P" & ligne).Value = "" Then
saisie = InputBox("Tapez votre commentaire :", "Boite de saisie")
Range("P" & ligne).Value = saisie
'Range("A!GlobalMenu" & ligne).Value = Range("P" & ligne).Value


'["GlobalMenu"!A(ligne)] = ["PRESENTATION"!A(ligne)]
Sheets("GlobalMenu").Range("A" & ligne) = ["PRESENTATION"!A(ligne)]
End If

Next ligne


For J = 2 To Sheets.Count


Next J

For I = 3 To Sheets.Count

CommentaireOnglet = Range("P" & I - 1)

Range("B" & I).Select


Range("B" & I).AddComment
Range("B" & I).Comment.Visible = False
Range("B" & I).Comment.Text Text:=CommentaireOnglet & Chr(10) & ""

Next I



FinProc:
'If Range("B" & I).AddComment.Visible Then
MsgBox ("Commentaire déjà présent!")
'End If

DebutProc:

End Sub
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Tout fonctionne correctement à la première activation de la macro CommentAuto uniquement.
Sauf que , et c'est important, j'ai un défaut valeur(#VALEUR!)ui s'affiche dans l'onglet MenuGlobal dans la colonne A aux emplacements A(1) à A(Ligne).
J'avais quand même pris soin de déclarer le contenu de la colonne A de l'onglet GlobalMenu comme étant de type standart (ça ne marche pas) et texte (idem, ça ne marche pas...).
Même chose si je déclare dans mon code saisie comme "string" au lieu de variant.

Donc j'ai deux questions:

1-Qelle variable déclarer pour ne pas avoir cette erreur?
2-Je ne vois comment je peux traiter de manière correcte le cas ou les commentairtes existe déjà afin qu'il ne bloque pas le programme.
Dans le cas l'erreurest de type 1004 et elle se positionne toujours sur la ligne "Range("B" & I).AddComment".
0
J'oublie de préciser une chose.
Je suis preneur de toute aide sur ce sujet !!!
Je dis simplement ça afin de ne pas éventuellement heurter le la timidité de celui ou celle qui n'oserait pas se glisser dans ce poste en cours...

:-)))
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 juin 2008 à 15:41
Re,

Je marche à tâtons car sans voir le truc...

Tu parles du contenu de la cellule P(x) de presentation a copier dans A (x) de globalmenu

mais je lis
Sheets("GlobalMenu").Range("A" & ligne) = ["PRESENTATION"!A(ligne)]

alors peut-être que:
Sheets("GlobalMenu").Range("A" & ligne) = range("P" & ligne)

tu n'as pas besoin de préciser "présentation" car quelques lignes avant, tu as forcé sur cet onglet


Maintenant sur le fonctionnement tu n'inscris dans globalmenu que les nouveaux commentaires demandés sur présentation ?

Michel
0
Maouais,

Je tente d'être le plus clair possible, mais il faut reconnaître que ce n'est apas toujours très facile.
Donc je reformule et tu me dis si cela devient un peu plus clair pour toi.

Je suis en train de mettre au point un système sous excel afin de suivre l'évolution ou la progression d'une phase de tests de produits dans un bureau d'études.
Pour cela je dois d'un côté écrire des processus de tests afin d'expliquer comment et dans quels conditions sont réalisés les tests de 'validation'. De l'autre je dois 'traiter' les informations suivant le résulats de tests (OK, NonOK,...).

Sachant que j'ai et je ne cesse de créer des onglets répondant à 'requêts' particulières de traitement ou d'affichage des résulats, j'ai tout simplement décidé qu'un onglet de présentation devra présenter la liste de chaque onglet existant avec pour chacun un commentaire (afin d'aider l'utilisateur dans ses déplacement au sein dufichier excel).

N'étant un super pro de la programmation, et pour contourner certains bugs je suis dans l'obligation de stocker mes commentaires dans un premier temps dans la colonne P de l'onglet PRESENTATION puis de copier ces données dans l'onglet MainMenu. pourquoi cela me diras tu ?
Rien de plus simple l'onglet PRESENTATION est supprimé et recrée afin de pendre en compte les éventuelles modifications (insertion de feuille par exemple) lors du lancement d'une macro dite ListeFeuilles ou encore à l'ouverture du fichier ou cette même macro est aussi 'appellée'.

Donc la mofi que je t'ai demandé n'est qu'un petit 'truc' je ne vois pas d'autres mots me ermettant de toujours avec les commentaires sauvegardé quelque part après qu'ils aient été au moins une fois tapés.

En espérant que cela clarifie les choses pour toi.

Le programme marche, je sais que les select ralentissent tout mais je ne sais pas comment m'en passer dans tous les cas, alors je fais avec...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 juin 2008 à 16:27
Ok, regarde la modif que je t'ai proposé et dis moi (je ne pige pas pourquoi "valeur")...

Laissons de coté les "select" car l'important n'est pas de refaire une station orbitale mais que tu puisses facilement faire la maintenance de ton appli. Dito pour la feuille temporaire "présentation".

Pour eviter les clignotements de l'écran ecris cette ligne après les déclarations:

Application.screenupdating=false

Dans l'attente (suis à la mine donc délais aléatoire)

Michel
0
Re,

Ok je vais tenter différentes choses.
Ta dernière remarque m'intéresse je vais l'intégrer dans mes macros.
Je suis obligé de m'absenter car une réunion vient de me tomber dessus...

Je te recontacte demain.
Encore merci pour ton aide.
Chacun à ses petits impératifs professionnels, alors on aura bien l'occasion de se recontacter.
Je laisse donc le Post ouvert jusqu'à au moins mercredi.

Un dernier truc, je viens de relire vite fait ce que j'ai tapé, et bien j'ai fait une superbe collection de fautes de frappe en tout genre. Il vafalloir que j'y fasse un peu plus attention, ça ne facilite pas la compréhension...

A très bientôt je l'espère.

Et déjà, merci pour ton aide.

Au fait si quelqu'un d'autre souhaite ou peut m'apporter son qide, je suis toujours preneur.

A+ Michel
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Evinrude44
11 juin 2008 à 10:24
Bonjour,

Beaucoup de boulot à la mine jusqu'à jeudi ap-midi au plus tôt....

Mais il y a du monde qui peut t'aider sur le forum...

Michel
0
Evinrude44 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
11 juin 2008 à 16:18
Re Bonjour,

J'ai réalisé quelques améliorations et aussi simplifications (merci michel_m).
Donc on peut considérer que ce post est OK.


Salut!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zut j'oublie de clore ce post
0