Macro VBA faisant appel à deux feuilles excel
Résolu/Fermé
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
-
27 oct. 2010 à 13:12
la_defense Messages postés 13 Date d'inscription mercredi 27 octobre 2010 Statut Membre Dernière intervention 6 décembre 2010 - 27 oct. 2010 à 16:21
la_defense Messages postés 13 Date d'inscription mercredi 27 octobre 2010 Statut Membre Dernière intervention 6 décembre 2010 - 27 oct. 2010 à 16:21
A voir également:
- Macro VBA faisant appel à deux feuilles excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Appel anonyme - Guide
- Aller à la ligne excel - Guide
- Fusionner deux feuilles excel - Guide
7 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
27 oct. 2010 à 13:22
27 oct. 2010 à 13:22
Bonjour,
Essaie ceci :
Je ne vois pas trop l'utilité, la cellule A6 de la feuille Calcul va s'effacer au fur et à mesure et tu ne va y retrouver que la dernière valeur...
Essaie ceci :
Sub Macro1() Dim i As Integer Sheets("Saisie_données_contrat").Activate For i = 2 To 149 Step 3 With Sheets("Calcul") .Range("A6").Value = Sheets("Saisie_données_contrat").Range("A" & i).Value End With Next i End Sub
Je ne vois pas trop l'utilité, la cellule A6 de la feuille Calcul va s'effacer au fur et à mesure et tu ne va y retrouver que la dernière valeur...
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
27 oct. 2010 à 13:32
27 oct. 2010 à 13:32
Je viens d'essayer ton code et il ne se passe rien. La souris se met juste sur la case A2 de la feuille Saisie_données_contrat et c'est tout. Il ne sepasse rien sur la feuille Calcul et la cellule Calcul!A6 reste vide.
C'est bizarre. Aurais-tu une autre idée?
En fait la finalité de mon code sera
- de mettre succesivement dans A6 les valeurs de la colonne A de la feuille Saisie_données_contrat
- de recopier la plage de données A6:I8
- de la copier sur une troisième feuille
Mais comme je ne suis pas une lumière en VBA, je voulais y aller étape par étape en fait.
Merci de ta réponse
C'est bizarre. Aurais-tu une autre idée?
En fait la finalité de mon code sera
- de mettre succesivement dans A6 les valeurs de la colonne A de la feuille Saisie_données_contrat
- de recopier la plage de données A6:I8
- de la copier sur une troisième feuille
Mais comme je ne suis pas une lumière en VBA, je voulais y aller étape par étape en fait.
Merci de ta réponse
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
27 oct. 2010 à 13:44
27 oct. 2010 à 13:44
C'est cela que je ne comprends pas : de mettre succesivement dans A6 les valeurs de la colonne A tu es d'accord avec moi que :
1- je place Sheets("Saisie_données_contrat").Range("A1").Value dans A6, j'obtiens : Sheets("Saisie_données_contrat").Range("A1").Value
2- je place Sheets("Saisie_données_contrat").Range("A4").Value dans A6, j'obtiens : Sheets("Saisie_données_contrat").Range("A4").Value et Sheets("Saisie_données_contrat").Range("A1").Value a disparu...
1- je place Sheets("Saisie_données_contrat").Range("A1").Value dans A6, j'obtiens : Sheets("Saisie_données_contrat").Range("A1").Value
2- je place Sheets("Saisie_données_contrat").Range("A4").Value dans A6, j'obtiens : Sheets("Saisie_données_contrat").Range("A4").Value et Sheets("Saisie_données_contrat").Range("A1").Value a disparu...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 27/10/2010 à 13:46
Modifié par pijaku le 27/10/2010 à 13:46
Que contiennent les cellules A6:I8 que tu veux copier coller?
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
27 oct. 2010 à 13:53
27 oct. 2010 à 13:53
Non non, je me suis mal exprimé.
Dans ma feuille "Calcul", j'ai la plage A6:I8 comme ci-dessous.
N° contrat Année1 Année2 Année3 Année4 ......Année8
Montant1 Montant2 Montant3 Montant4 ....Montant8
gain1 gain2 gain3 gain4...........gain8
les cellules Année, montant et gain se remplissent automatiquement avec une recherchev selon le numéro de contrat justement entré en A6.
Sur ma feuille saisie_données_contrat, j'ai justement l'ensemble de mes contrats dans la colonne A
Contrat 1
ligen vide
ligne vide
Contrat2
Dans ma feuille "Calcul", j'ai la plage A6:I8 comme ci-dessous.
N° contrat Année1 Année2 Année3 Année4 ......Année8
Montant1 Montant2 Montant3 Montant4 ....Montant8
gain1 gain2 gain3 gain4...........gain8
les cellules Année, montant et gain se remplissent automatiquement avec une recherchev selon le numéro de contrat justement entré en A6.
Sur ma feuille saisie_données_contrat, j'ai justement l'ensemble de mes contrats dans la colonne A
Contrat 1
ligen vide
ligne vide
Contrat2
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 27/10/2010 à 13:57
Modifié par pijaku le 27/10/2010 à 13:57
Ok. Donc tu veux :
1- mettre le 1er num de contrat en A6
2- copier/collage spécial valeur de A6:I8 en Feuil3 A1
3- mettre le 2ème num de contrat en A6
4- copier/collage spécial valeur de A6:I8 en Feuil3 A4
etc...
C'est bien cela???
1- mettre le 1er num de contrat en A6
2- copier/collage spécial valeur de A6:I8 en Feuil3 A1
3- mettre le 2ème num de contrat en A6
4- copier/collage spécial valeur de A6:I8 en Feuil3 A4
etc...
C'est bien cela???
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
27 oct. 2010 à 13:56
27 oct. 2010 à 13:56
et ainsi de suite.
ce que je voudrais, c'est que ma cellule contrat (Calcul!A6) soit incrémentée automatiquement depuis ma colonne A de la feuille saisie_données_contrat.
Comme a chaque nouveau contrat les valeurs de la plage A6:I8 sont recalculées, je voudrais les recopier sur une autre feuille.
Et pour le moment, j'essaie de trouver le code qui me permet de mettre succesivement dans A6 les valeurs de la colonne A de la deuxième feuille.
Désolée, je n'ai pas été assez claire dans ma question.
Merci de ta dispo et de prendre le temps de m'aider, je me sens vraiment bête la
ce que je voudrais, c'est que ma cellule contrat (Calcul!A6) soit incrémentée automatiquement depuis ma colonne A de la feuille saisie_données_contrat.
Comme a chaque nouveau contrat les valeurs de la plage A6:I8 sont recalculées, je voudrais les recopier sur une autre feuille.
Et pour le moment, j'essaie de trouver le code qui me permet de mettre succesivement dans A6 les valeurs de la colonne A de la deuxième feuille.
Désolée, je n'ai pas été assez claire dans ma question.
Merci de ta dispo et de prendre le temps de m'aider, je me sens vraiment bête la
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
27 oct. 2010 à 13:58
27 oct. 2010 à 13:58
oui, c'est exactement ce que je veux faire
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
27 oct. 2010 à 14:16
27 oct. 2010 à 14:16
Alors prends ce code. Remplace "Feuil3" par le nom de ta troisième feuille...
Sub Macro1() Dim i As Integer, DerniereLigne As Integer, Derlig As Integer 'déclaration des variables Sheets("Saisie_données_contrat").Activate 'On active la feuille Saisie_données_contrat Derlig = Sheets("Saisie_données_contrat").Range("A65536").End(xlUp).Row ' on en détermine la dernière ligne qui servira de fin à notre boucle For i = 2 To Derlig Step 3 'initialisation de la boucle Step 3 With Sheets("Calcul") 'dans la feuille calcul 'la cellule A6 prends la 1ere valeur de la boucle .Range("A6").Value = Sheets("Saisie_données_contrat").Range("A" & i).Value End With 'ici on détermine la première ligne vide de la feuille3 With Sheets("Feuil3") DerniereLigne = .Range("A65536").End(xlUp).Row + 1 End With 'on copie la plage de cellules de feuille calcul With Sheets("Calcul") .Range("A6:I8").Copy End With 'et on colle "spécial valeurs" Sheets("Feuil3").Range("A" & DerniereLigne).PasteSpecial Paste:=xlPasteValues 'au suivant Next i End Sub
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
27 oct. 2010 à 14:19
27 oct. 2010 à 14:19
Je tente tout de suite
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
27 oct. 2010 à 14:44
27 oct. 2010 à 14:44
Testé.
Alors,
Ca me copie bien mes contrats sur la feuille3 mais par contre il ne recopie que la plage A6:I6, c-à-d la première ligne de la plage que je veux recopier. Sauf pour le dernier contrat ou il y a bine la plage A6:I8.
Peux être qu'il recopie bien les 3 ligne (6 à 8) mais que chaque nouveau contrat viens ecraser les deux dernières lignes du contrat précédentsauf le dernier.
A part ça, c'est vraiment ce que je recherche à faire
Alors,
Ca me copie bien mes contrats sur la feuille3 mais par contre il ne recopie que la plage A6:I6, c-à-d la première ligne de la plage que je veux recopier. Sauf pour le dernier contrat ou il y a bine la plage A6:I8.
Peux être qu'il recopie bien les 3 ligne (6 à 8) mais que chaque nouveau contrat viens ecraser les deux dernières lignes du contrat précédentsauf le dernier.
A part ça, c'est vraiment ce que je recherche à faire
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
27 oct. 2010 à 15:06
27 oct. 2010 à 15:06
Ou peut être que dans la feuille calcul, les cellules A7 et A8 ne sont pas complétées?
Si oui, tu aurais pu le dire..... Ou pas!! C'est pas grave. Si I8 est toujours remplie essaye ceci :
Si oui, tu aurais pu le dire..... Ou pas!! C'est pas grave. Si I8 est toujours remplie essaye ceci :
Sub Macro1() Dim i As Integer, DerniereLigne As Integer, Derlig As Integer Sheets("Saisie_données_contrat").Activate Derlig = Sheets("Saisie_données_contrat").Range("A65536").End(xlUp).Row For i = 2 To Derlig Step 3 With Sheets("Calcul") .Range("A6").Value = Sheets("Saisie_données_contrat").Range("A" & i).Value End With With Sheets("Feuil3") DerniereLigne = .Range("I65536").End(xlUp).Row + 1 End With With Sheets("Calcul") .Range("A6:I8").Copy End With Sheets("Feuil3").Range("A" & DerniereLigne).PasteSpecial Paste:=xlPasteValues Next i End Sub
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
27 oct. 2010 à 15:55
27 oct. 2010 à 15:55
J'étais en réunion, je viens de voir ta réponse.
Euh oui, c'est vrai que je n'ai pas précisé mais les cases sont bien remplies.
J'essaie ta nouvelle version te je te tiens au courant
merkiiiiiiiiiiiiiiiii
Euh oui, c'est vrai que je n'ai pas précisé mais les cases sont bien remplies.
J'essaie ta nouvelle version te je te tiens au courant
merkiiiiiiiiiiiiiiiii
la_defense
Messages postés
13
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
27 oct. 2010 à 16:21
27 oct. 2010 à 16:21
Super ça marche.
Il me recupere bien mes contrats et il me colle toute ma plage de données, c'est super.
Merci pour tout, c'est vraiment super.
Bonne fin de journée
Il me recupere bien mes contrats et il me colle toute ma plage de données, c'est super.
Merci pour tout, c'est vraiment super.
Bonne fin de journée