Macro VBA faisant appel à deux feuilles excel
Résolu
la_defense
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
la_defense Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
la_defense Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème avec une macro VBA.
Mon code est le suivant:
Sub Macro1()
Sheets("Saisie_données_contrat").Activate
i = 2
For i = 2 To 149 Step 3
'il me prends A2 puis A5 puis A8, il refusait A&"i" donc j'ai utilisé (chr34) (lgne du dessous)
contrat = (chr34) & "A" & i & (chr34)
Range(contrat).Select
Sheets("Calcul").Activate
Range("A6").Select
Range("A6").Value = Range(contrat).Value
Next i
End Sub
Sur la feuille "Saisiee_donnée_contrat", il me prends a partir de la 2éme ligne les valeurs de la colonne A et ce toutes les 3 lignes (A2, A5, A8 et ainsi de suite)
Ensuite je voudrais qu'il me copie successivement ces valeurs dans la cellule A6 de la feuille calcul.
Mais en fait ma macro me prends bien une valeur sur 3 de la colonne A et les mets dans la cellule A6, mais elle prends la colonne A de la feuille Calcul et non pas la colonne A de la feuille "Saisie_données_contrats".
Je pense que sur la ligne de code contrat=(chr34)......., il faut que je lui spécifie la feuille excel concernée.
Savez-vous comment faire ça?
D'avance merci, ça fait 2 jours que je suis bloquée dessus.
Merci merci merci
J'ai un problème avec une macro VBA.
Mon code est le suivant:
Sub Macro1()
Sheets("Saisie_données_contrat").Activate
i = 2
For i = 2 To 149 Step 3
'il me prends A2 puis A5 puis A8, il refusait A&"i" donc j'ai utilisé (chr34) (lgne du dessous)
contrat = (chr34) & "A" & i & (chr34)
Range(contrat).Select
Sheets("Calcul").Activate
Range("A6").Select
Range("A6").Value = Range(contrat).Value
Next i
End Sub
Sur la feuille "Saisiee_donnée_contrat", il me prends a partir de la 2éme ligne les valeurs de la colonne A et ce toutes les 3 lignes (A2, A5, A8 et ainsi de suite)
Ensuite je voudrais qu'il me copie successivement ces valeurs dans la cellule A6 de la feuille calcul.
Mais en fait ma macro me prends bien une valeur sur 3 de la colonne A et les mets dans la cellule A6, mais elle prends la colonne A de la feuille Calcul et non pas la colonne A de la feuille "Saisie_données_contrats".
Je pense que sur la ligne de code contrat=(chr34)......., il faut que je lui spécifie la feuille excel concernée.
Savez-vous comment faire ça?
D'avance merci, ça fait 2 jours que je suis bloquée dessus.
Merci merci merci
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
- Nombre de jours entre deux dates excel - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Word et excel gratuit - Guide
7 réponses
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...
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
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...
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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