Transfert de Valeurs EXCEL/VBA
holaaaa
-
LePierre Messages postés 249 Statut Membre -
LePierre Messages postés 249 Statut Membre -
Bonjour,
J'ai un problème sous Excel/VBA, où je souhaite transférer une valeur d'une feuille vers autre via une macro.
Voici mon code :
Sub bla()
For Each feuille In Worksheets
If feuille.Name <> "Recapitul" Then
feuille.Activate
feuille.Range(Cells(45, 79)).Copy
Sheets("Recapitul").Activate
Cells(4, 5).Select
ActiveSheet.Paste
End If
Next
End Sub
En gros, on va chercher dans chaque feuille une cellule (celle à la ligne 45/colonne 79) et l'on fait un récapitulatif dans la feuille "Recapitul".
Apparament il y aurait une erreur avec la ligne "feuille.Range(Cells(45, 75)).Copy". Je ne comprends vraiment pas où est mon problème.
Merci d'avance à tous ceux qui pourront m'aider!
Bien cordialement,
J'ai un problème sous Excel/VBA, où je souhaite transférer une valeur d'une feuille vers autre via une macro.
Voici mon code :
Sub bla()
For Each feuille In Worksheets
If feuille.Name <> "Recapitul" Then
feuille.Activate
feuille.Range(Cells(45, 79)).Copy
Sheets("Recapitul").Activate
Cells(4, 5).Select
ActiveSheet.Paste
End If
Next
End Sub
En gros, on va chercher dans chaque feuille une cellule (celle à la ligne 45/colonne 79) et l'on fait un récapitulatif dans la feuille "Recapitul".
Apparament il y aurait une erreur avec la ligne "feuille.Range(Cells(45, 75)).Copy". Je ne comprends vraiment pas où est mon problème.
Merci d'avance à tous ceux qui pourront m'aider!
Bien cordialement,
A voir également:
- Transfert de Valeurs EXCEL/VBA
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Déplacer colonne excel - Guide
1 réponse
bonjour
voici ton code modifié et testé :
j'ai ajouté la gestion des lignes dans la feuille "Recapitul".
à plus
voici ton code modifié et testé :
Sub bla()
Lig = 4
For Each feuille In Worksheets
If feuille.Name <> "Recapitul" Then
feuille.Select
feuille.Cells(45, 79).Copy
Sheets("Recapitul").Activate
Cells(Lig, 5).Select
ActiveSheet.Paste
Lig = Lig + 1
End If
Next
End Sub
j'ai ajouté la gestion des lignes dans la feuille "Recapitul".
à plus
Merci de ton aide. Bon, ça ne marche pas encore, mais grâce à toi j'ai trouvé l'erreur... c'est déjà ça!! Je t'explique :
En fait, je mets cette macro depuis un bouton qui se situe sur une autre feuille encore, qu'on appelera "accueil".
Donc quand je clique sur ce bouton dans la feuille "accueil", ton code fonctionne jusqu'à la ligne "Cells(Lig, 5).Select", où là ça bug !!! A mon avis, le programme ne "comprend" pas que je souhaite écrire sur la feuille "recapitul". Tu vois ce que je veux dire ?
Par ailleurs, je souhaiterais copier plusieurs cases et non une seule ; c'est pour cela que j'avais mis :
"feuille.Range.(Cells(45, 79), Cells(52, 86)).Copy"
Donc deux problèmes : Ton code fonctionne bien si je ne mets pas de bouton dans une autre feuille (j'ai essayé : cela marche avec le bouton situé dans la feuille "recapitul") ; et le fait que je souhaiterais copier plusieurs cellules (au moins 3 si c'est possible).
Mon code actuel est donc le suivant :
Private Sub CommandButton1_Click()
Lig = 4
For Each feuille In Worksheets
If feuille.Name <> "Recapitul" Then
feuille.Select
feuille.Range(Cells(45, 79, Cells(52, 86)).Copy
Sheets("Recapitul").Activate
Cells(Lig, 5).Select
ActiveSheet.Paste
Lig = Lig + 1
End If
Next
End Sub
En souligné : les lignes qui ne fonctionnent pas !
Merci beaucoup de ton aide... ou de votre aide si d'autres personnes pensent avoir la solution!!
++
effectivement ça ne peut pas fonctionner car le "coller" de la deuxième feuille efface les données récupérées de la cellule (52,86) de la première feuille.
de plus il manque une parenthèse après (45,79
il faut : feuille.Range(Cells(45, 79), Cells(52, 86)).Copy
colle ce code dans un module et affecte la macro "bla" à ton bouton. J'ai testé et ça fonctionne.
par contre je colle la deuxième valeur à côté de la première. Ce n'est peut être pas ça que tu veux ?
souhaites-tu vraiment copier ces cellules ou simplement récupérer le contenu de ces cellules ? Si tu ne veux que la valeur contenue le code est plus facile à réaliser.
Sub bla() Lig = 4 For Each feuille In Worksheets If feuille.Name <> "Recapitul" And feuille.Name <> "accueil" Then feuille.Select feuille.Cells(45, 79).Copy Sheets("Recapitul").Activate Cells(Lig, 5).Select ActiveSheet.Paste feuille.Select feuille.Cells(52, 86).Copy Sheets("Recapitul").Activate Cells(Lig, 6).Select ActiveSheet.Paste Lig = Lig + 1 End If Next End Subà plus
Le truc c'est que dans certaines cellules que je copie, le contenu est : =I13+J13 par exemple!! Or, moi je ne veux pas copier cette formule, mais la valeur numérique (résultat qui s'affiche dans la case!!).
Dans ces conditions, tu dis que le code est différent ? et plus simple ?
Sinon pour ta question : ce n'est pas grave si les cellules "collées" sont à côté ! Si jamais je ne le souhaite pas, je devrai créer un deuxième compteur lig2 !? non ?
En tout cas merci pour toute cette aide ! Je vais essayer de faire fonctionner ton code mais je crains que je vais avoir le problème de contenu/valeur dont on a parlé !!
En tout cas je suis obligé de fonctionner par VBA (meme si je ne veux que les valeurs des cellules (et les formats!)), car je souhaite par la suite ajouter des feuilles dans mon fichier Excel et que ma feuille "recapitul" ajoute toute seule les nouvelles données!
Merci merci!!
tu peux préparer ta feuille "Recapitul" en copiant manuellement tes formats particuliers et en les collant aux bons emplacements (colonnes 5 et 6 dans cet exemple).
Ensuite tu récupéres simplement les valeurs.
voici le nouveau code de récupération :
Sub bla2() Lig = 4 For Each feuille In Worksheets If feuille.Name <> "Recapitul" And feuille.Name <> "accueil" Then Valeur1 = feuille.Cells(45, 79).Value Valeur2 = feuille.Cells(52, 86).Value Sheets("Recapitul").Activate Cells(Lig, 5).Value = Valeur1 Cells(Lig, 6).Value = Valeur2 Lig = Lig + 1 End If Next End Subà plus