Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2012, 22h47   #1
Futur Membre du Club
 
Homme Lambert Eric
Inscription : mars 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme Lambert Eric
Âge : 31
Localisation : Canada

Informations forums :
Inscription : mars 2010
Messages : 54
Points : 19
Points : 19
Par défaut Solution plutot introuvable

Bonjour a tous.

J'ai un problème de taille (pour mon niveau Excel ) J'ai un classeur contenant 2 feuilles, une feuille qui me sert de formulaire pour entrer des données dans l'autre feuille. Je maitrise bien le copiage des données de cellule d'une page à l'autre ainsi que le copiage des choix de mes liste déroulante...mais voici mon problème: j'ai créé un bouton qui me permet de faire une copie conforme de la feuille 2 mais en vidant les valeurs pour permettre de nouvelle entrées de données, ca fonctionne mais quand j'entre des données sur ma feuille 1, il la met sur la feuille 3 et change celle de la feuille 2 également et c'est exactement ce que je ne veux pas ! Mais c'est normal car tout ce copie donc les liaison de cellules aussi...ce que je voudrais, c'est une macro ou un code me permettant de fermer ou verrouiller la feuille 2 puis ajouter les données sur la feuille 3 plutôt , puis si j'en créé une quatrième la 3 se verrouille etc...

J'ai cru voir sur un forum anglais qu'on pouvais, par vba, supprimer les formules ou lien de cellule (=c17) sans supprimer le résultat de cette formule ou liaison...mais c'était au dessus de mon niveau de compétence !!

Merci d'avance et j’espère avoir été clair dans mon explication
Biggy30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 23h45   #2
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonsoir,

Une solution qui marche en VBA et sous Excel, c'est de faire un copier / coller par valeur.

Le coller par valeur, supprime la formule dans la plage de destination, en gardant la valeur affichée.

exemple :
Code :
1
2
3
WorkSheets("Feuil1").Range("A1:B2").Copy  
WorkSheets("Feuil2").Range("A1:B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 10h07   #3
Futur Membre du Club
 
Homme Lambert Eric
Inscription : mars 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme Lambert Eric
Âge : 31
Localisation : Canada

Informations forums :
Inscription : mars 2010
Messages : 54
Points : 19
Points : 19
Merci pour ce code c génial...mais un probleme subsiste...comment dire a Excel que lorseque je click sur le bouton "Ajouter une Commande" , en plus de copier la feuille2 il doit maintenant entrer les données sur la nouvelle feuille ??

je ne suis toujours pas pour changer "feuil2" pour "feuil3" et ainsi de suite, je n'arrive pas a trouver.

Et si dans une cellule de la feuil2 j'ai une référence a un index de liste déroulante (=INDEX(PROGRAMME!$R$8:$R$18,PROGRAMME!$R$19)) je fait comment pour appliquer ca a ton bout de code ??

Merci de ton aide
a +
Biggy30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 12h10   #4
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonjour,

Je n'ai pas compris les problèmes / questions précédentes.

Citation:
lorsque je click sur le bouton "Ajouter une Commande" , en plus de copier la feuille2 il doit maintenant entrer les données sur la nouvelle feuille ??
Quelles nouvelles données ?
Citation:
je ne suis toujours pas pour changer "feuil2" pour "feuil3" et ainsi de suite, je n'arrive pas a trouver


D'après ce qui était présenté au premier message, je ferais :
- on garde toujours la même feuille pour la saisie & feuille active (feuille 1 & 2).
- lorsqu'on veut créer une copie "sans référence" de la feuille active (feuille 2) :
Code :
1
2
3
4
5
6
7
8
9
    'copie la feuille 2 à sauvegarder en 3ème position du classeur
    Sheets("Feuil2").Copy After:=Worksheets(2) 
 
   ' copie les données et formules' de la feuille à sauvegarder.
    ' colle les données par valeur sur la même plage.
    with Worksheets(3).Range("A1:B2")
          .Copy  
          .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    end with
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 18h10   #5
Futur Membre du Club
 
Homme Lambert Eric
Inscription : mars 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme Lambert Eric
Âge : 31
Localisation : Canada

Informations forums :
Inscription : mars 2010
Messages : 54
Points : 19
Points : 19
Bon je vais essayer d’être plus clair...

J'ai 2 feuille dans mon classeur, la première sert de formulaire, la deuxième sert de template pour mon bon de commande. Lorsque j'ouvre mon classeur, et que je veux ajouter une nouvelle commande, je clique sur mon bouton "Ajouter une commande" dans ma feuille1 et cela copie la feuille2 comme quand on fait un coller spécial...ensuite quand j'entre mes données de commande dans mon formulaire (la feuille1) les données se transfèrent sur la feuille2 ainsi que sur la nouvelle feuille...ma question: comment copier mes cellules de ma feuille1 sur et seulement sur la nouvelle feuille créé, car si je clique trois fois sur mon bouton, je me ramasse avec trois nouvelle feuilles dont les données seront modifiées toutes pareilles...comment empêcher ca ??

En Clair..quand j'ai fini d'entrer mes données dans la feuille2 via la feuille1, comment faire une copie intégrale de cette feuille mais sans les formules ?

ce que tu m'as proposé ne fonctionne qu'une seule fois car le paste spacial se fait sur la meme feuille donc quand j'en ajoute une autre, mes formules nexistent plus, alors qu'elles doivent rester sur la feuille2 pour que je puisse en refaire une copie etc..

Bon, j'ai été sur un autre forum et un type m'as donner son bout de code qui selon lui fonctionnait tres bien chez lui....je l'ai adapter pour mon programme mais il me met une erreur 1004 sur une des ligne:

Code :
1
2
3
4
5
6
7
8
9
Sub NouvComm()

    Feuil1.Copy Before:=Sheets(3)
    Feuil1.Range("C8:m9").Copy
    ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    ActiveSheet.Name = Range("C2").Text
    Sheets("PROGRAMME").Select
    
End Sub
Si j'enlève ActiveSheet devant le .pastespacial ca fonctionne mais ca colle pas sur la bonne feuille, ca colle sur la feuille 1...il doit y avoir un foutu moyen de copier sur la nouvelle feuille...alors que ActiveSheet.Name fonctionne bien lui...je pige pas bordel !!!
Biggy30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 18h36   #6
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonjour,

Ci-joint un exemple d'application, a essayer après avoir fermé et redémarrer Excel.

- feuille 1 : saisie
- feuille 2 : modèle avec lien sur feuille 1

<bouton rouge> : copie modèle dans une autre feuille, sans garder les liens sur feuille1 pour la plage "A116"


Le code actif une adaptation de celui poster hier.

Code :
1
2
3
4
5
6
  Call Worksheets("modele").Copy(After:=Worksheets("modele")) 
 
  With Worksheets(3).Range("A1:D16")
        .Copy
        .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With
Fichiers attachés
Type de fichier : zip Copie sans lien.zip (13,4 Ko, 6 affichages)
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/01/2012, 18h48   #7
Futur Membre du Club
 
Homme Lambert Eric
Inscription : mars 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme Lambert Eric
Âge : 31
Localisation : Canada

Informations forums :
Inscription : mars 2010
Messages : 54
Points : 19
Points : 19
Merci je test et je te reviens !!


WOW CA MARCHE NICKEL, C'EST EXACTEMENT CE QUE JE RECHERCHAIS !!!!
JE T'EN REMERCIE ÉPERDUEMENT !!!!!!!!!!

ET SURTOUT JE COLLE CA DANS UN FICHIER....CA DEVRAIT ME RESERVIR !!!!!!
MERCI MERCI MERCI ENCORE !!!!!
Biggy30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 18h58   #8
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Content de voir que ça fonctionne de l'autre coté de l'Atlantique aussi.

Bonne soirée.
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h09.


 
 
 
 
Partenaires

Hébergement Web