Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MACRO POUR RECUPERER DES DONNEES SUR PLUSIEURS FEUILLES

8 réponses
Avatar
Yapi
Bonjour,

Je cherche une macro qui me permette de prendre des données sur plusieurs
feuilles pour les synthétiser sur une dernière nommée "SYNTHESE"

Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son âge.

Les deux premières feuilles et l'avant dernière nommée TOTAL ne concernent
pas des salariés.

J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM Colonne C :
AGE

Je voudrais maintenant lancer sur une dernière feuille "SYNTHESE" une macro
qui me recherche sur les feuilles N°3 jusqu'à la feuille précédant TOTAL, les
informations qui m'intéressent...

Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci pour votre
aide,

Yapi

8 réponses

Avatar
tissot.emmanuel
Bonjour,

Lance Visual Basic Editor (Alt+F11)

Insertion>Module

Copier-coller ce code:

Sub Assembler()
Dim i As Long, j As Long
WorkSheets("SYNTHESE").Select
For i = 3 To WorkSheets.Count - 2
j = Range("A65536").End(xlUp).Row + 1
With WorkSheets(i)
Cells(j,1).Value = .Range("A1").Value
Cells(j,2).Value = .Range("A2").Value
Cells(j,3).Value = .Range("A3").Value
End With
Next
End Sub

Fermer VBE, sous Excel Alt+F8 pour lancer la macro.

Test et reviens si ca ne va pas.

Cordialement,

Manu/



"Yapi" a écrit dans le message de news:

Bonjour,

Je cherche une macro qui me permette de prendre des données sur plusieurs
feuilles pour les synthétiser sur une dernière nommée "SYNTHESE"

Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son âge.

Les deux premières feuilles et l'avant dernière nommée TOTAL ne concernent
pas des salariés.

J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM Colonne C
:
AGE

Je voudrais maintenant lancer sur une dernière feuille "SYNTHESE" une
macro
qui me recherche sur les feuilles N°3 jusqu'à la feuille précédant TOTAL,
les
informations qui m'intéressent...

Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci pour votre
aide,

Yapi


Avatar
JB
Bonjour,

Dans un module:

Function nomOnglet(n)
Application.Volatile
nomOnglet = Sheets(n).Name
End Function

Function nbOnglets()
Application.Volatile
nbOnglets = Sheets.Count
End Function


En A2 de synthèse (Nom feuille):
=SI(LIGNE()<=nbonglets()-2;nomonglet(LIGNE()+1);"")

En B2: Nom
=SI(ESTERREUR(INDIRECT("'"&$A2&"'!A1"));"";INDIRECT("'"&$A2&"'!A1"))

En C2: Prénom
=SI(ESTERREUR(INDIRECT("'"&$A2&"'!A2"));"";INDIRECT("'"&$A2&"'!A2"))

http://cjoint.com/?hxn55WPffD

JB

On 23 juil, 13:22, Yapi wrote:
Bonjour,

Je cherche une macro qui me permette de prendre des données sur plusieu rs
feuilles pour les synthétiser sur une dernière nommée "SYNTHESE"

Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son âge.

Les deux premières feuilles et l'avant dernière nommée TOTAL ne con cernent
pas des salariés.

J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM Colo nne C :
AGE

Je voudrais maintenant lancer sur une dernière feuille "SYNTHESE" une m acro
qui me recherche sur les feuilles N°3 jusqu'à la feuille précédan t TOTAL, les
informations qui m'intéressent...

Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci pour votre
aide,

Yapi


Avatar
JB
Si des onglets sont ajoutés, la Maj sur synthèse est automatique.

JB
On 23 juil, 13:58, JB wrote:
Bonjour,

Dans un module:

Function nomOnglet(n)
Application.Volatile
nomOnglet = Sheets(n).Name
End Function

Function nbOnglets()
Application.Volatile
nbOnglets = Sheets.Count
End Function

En A2 de synthèse (Nom feuille):
=SI(LIGNE()<=nbonglets()-2;nomonglet(LIGNE()+1);"")

En B2: Nom
=SI(ESTERREUR(INDIRECT("'"&$A2&"'!A1"));"";INDIRECT("'"&$A2&"'!A1"))

En C2: Prénom
=SI(ESTERREUR(INDIRECT("'"&$A2&"'!A2"));"";INDIRECT("'"&$A2&"'!A2"))

http://cjoint.com/?hxn55WPffD

JB

On 23 juil, 13:22, Yapi wrote:



Bonjour,

Je cherche une macro qui me permette de prendre des données sur plusi eurs
feuilles pour les synthétiser sur une dernière nommée "SYNTHESE"

Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son âge.

Les deux premières feuilles et l'avant dernière nommée TOTAL ne c oncernent
pas des salariés.

J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM Co lonne C :
AGE

Je voudrais maintenant lancer sur une dernière feuille "SYNTHESE" une macro
qui me recherche sur les feuilles N°3 jusqu'à la feuille précéd ant TOTAL, les
informations qui m'intéressent...

Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci pou r votre
aide,

Yapi- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Yapi
Bonjour Manu,

ça marche, pas de problème... J'ai juste modifié qlq lignes pour que la MAJ
puisse se faire automatiquement

Sub Assembler()
Dim i As Long, j As Long
Worksheets("SYNTHESE").Select

For i = 3 To Worksheets.Count - 2
j = i - 1
With Worksheets(i)
Cells(j, 1).Value = .Range("A1").Value
Cells(j, 2).Value = .Range("A2").Value
Cells(j, 3).Value = .Range("A3").Value
End With
Next
End Sub

Pourrais-tu juste m'expliquer ce que signifie la première ligne? Ca
m'aiderait à comprendre pour l'utiliser plus tard (sans vouloir abuser...)

Yapi



Bonjour,

Lance Visual Basic Editor (Alt+F11)

Insertion>Module

Copier-coller ce code:

Sub Assembler()
Dim i As Long, j As Long
WorkSheets("SYNTHESE").Select
For i = 3 To WorkSheets.Count - 2
j = Range("A65536").End(xlUp).Row + 1
With WorkSheets(i)
Cells(j,1).Value = .Range("A1").Value
Cells(j,2).Value = .Range("A2").Value
Cells(j,3).Value = .Range("A3").Value
End With
Next
End Sub

Fermer VBE, sous Excel Alt+F8 pour lancer la macro.

Test et reviens si ca ne va pas.

Cordialement,

Manu/



"Yapi" a écrit dans le message de news:

Bonjour,

Je cherche une macro qui me permette de prendre des données sur plusieurs
feuilles pour les synthétiser sur une dernière nommée "SYNTHESE"

Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son âge.

Les deux premières feuilles et l'avant dernière nommée TOTAL ne concernent
pas des salariés.

J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM Colonne C
:
AGE

Je voudrais maintenant lancer sur une dernière feuille "SYNTHESE" une
macro
qui me recherche sur les feuilles N°3 jusqu'à la feuille précédant TOTAL,
les
informations qui m'intéressent...

Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci pour votre
aide,

Yapi







Avatar
tissot.emmanuel
Bonjour,

Pourrais-tu juste m'expliquer ce que signifie la première ligne? Ca
m'aiderait à comprendre pour l'utiliser plus tard (sans vouloir abuser...)


Pas de pb, voici l'original commentée.

Sub Assembler() 'Nom de la macro
Dim i As Long, j As Long 'Déclare deux variables numériques
WorkSheets("SYNTHESE").Select 'Active la feuille nommée SYNTHESE
'Passe chaque feuille en revue en partant de la 3eme jusqu'à
l'antépénultieme
For i = 3 To WorkSheets.Count - 2 'WorkSheets.Count donne le nombre
total de feuilles
'j prend la valeur du numéro de ligne de la 1ere cellule vide de la
colonne A
'A chaque passage dans la boucle j sera incrémentée de 1 du fait de
l'inscription des nouvelles données
j = Range("A65536").End(xlUp).Row + 1
With WorkSheets(i)
'Sur la ligne déterminée par j, la 1ere cellule prend la valeur
de la cellule A1 de la feuille dont l'index est égal à i
Cells(j,1).Value = .Range("A1").Value
'cf commentaire précedent
Cells(j,2).Value = .Range("A2").Value
'cf commentaire précedent
Cells(j,3).Value = .Range("A3").Value
End With
Next 'Passe à la feuille suivante
End Sub 'Fin

Cordialement,

Manu/

"Yapi" a écrit dans le message de news:

Bonjour Manu,

ça marche, pas de problème... J'ai juste modifié qlq lignes pour que la
MAJ
puisse se faire automatiquement

Sub Assembler()
Dim i As Long, j As Long
Worksheets("SYNTHESE").Select

For i = 3 To Worksheets.Count - 2
j = i - 1
With Worksheets(i)
Cells(j, 1).Value = .Range("A1").Value
Cells(j, 2).Value = .Range("A2").Value
Cells(j, 3).Value = .Range("A3").Value
End With
Next
End Sub

Pourrais-tu juste m'expliquer ce que signifie la première ligne? Ca
m'aiderait à comprendre pour l'utiliser plus tard (sans vouloir abuser...)

Yapi



Bonjour,

Lance Visual Basic Editor (Alt+F11)

Insertion>Module

Copier-coller ce code:

Sub Assembler()
Dim i As Long, j As Long
WorkSheets("SYNTHESE").Select
For i = 3 To WorkSheets.Count - 2
j = Range("A65536").End(xlUp).Row + 1
With WorkSheets(i)
Cells(j,1).Value = .Range("A1").Value
Cells(j,2).Value = .Range("A2").Value
Cells(j,3).Value = .Range("A3").Value
End With
Next
End Sub

Fermer VBE, sous Excel Alt+F8 pour lancer la macro.

Test et reviens si ca ne va pas.

Cordialement,

Manu/



"Yapi" a écrit dans le message de news:

Bonjour,

Je cherche une macro qui me permette de prendre des données sur
plusieurs
feuilles pour les synthétiser sur une dernière nommée "SYNTHESE"

Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son âge.

Les deux premières feuilles et l'avant dernière nommée TOTAL ne
concernent
pas des salariés.

J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM
Colonne C
:
AGE

Je voudrais maintenant lancer sur une dernière feuille "SYNTHESE" une
macro
qui me recherche sur les feuilles N°3 jusqu'à la feuille précédant
TOTAL,
les
informations qui m'intéressent...

Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci pour
votre
aide,

Yapi









Avatar
Yapi
Merci vraiment, grâce à ce que tu m'as envoyé je vais pouvoir bidouiller sur
d'autres programations... Sympa!

Yapi


Bonjour,

Pourrais-tu juste m'expliquer ce que signifie la première ligne? Ca
m'aiderait à comprendre pour l'utiliser plus tard (sans vouloir abuser...)


Pas de pb, voici l'original commentée.

Sub Assembler() 'Nom de la macro
Dim i As Long, j As Long 'Déclare deux variables numériques
WorkSheets("SYNTHESE").Select 'Active la feuille nommée SYNTHESE
'Passe chaque feuille en revue en partant de la 3eme jusqu'à
l'antépénultieme
For i = 3 To WorkSheets.Count - 2 'WorkSheets.Count donne le nombre
total de feuilles
'j prend la valeur du numéro de ligne de la 1ere cellule vide de la
colonne A
'A chaque passage dans la boucle j sera incrémentée de 1 du fait de
l'inscription des nouvelles données
j = Range("A65536").End(xlUp).Row + 1
With WorkSheets(i)
'Sur la ligne déterminée par j, la 1ere cellule prend la valeur
de la cellule A1 de la feuille dont l'index est égal à i
Cells(j,1).Value = .Range("A1").Value
'cf commentaire précedent
Cells(j,2).Value = .Range("A2").Value
'cf commentaire précedent
Cells(j,3).Value = .Range("A3").Value
End With
Next 'Passe à la feuille suivante
End Sub 'Fin

Cordialement,

Manu/

"Yapi" a écrit dans le message de news:

Bonjour Manu,

ça marche, pas de problème... J'ai juste modifié qlq lignes pour que la
MAJ
puisse se faire automatiquement

Sub Assembler()
Dim i As Long, j As Long
Worksheets("SYNTHESE").Select

For i = 3 To Worksheets.Count - 2
j = i - 1
With Worksheets(i)
Cells(j, 1).Value = .Range("A1").Value
Cells(j, 2).Value = .Range("A2").Value
Cells(j, 3).Value = .Range("A3").Value
End With
Next
End Sub

Pourrais-tu juste m'expliquer ce que signifie la première ligne? Ca
m'aiderait à comprendre pour l'utiliser plus tard (sans vouloir abuser...)

Yapi



Bonjour,

Lance Visual Basic Editor (Alt+F11)

Insertion>Module

Copier-coller ce code:

Sub Assembler()
Dim i As Long, j As Long
WorkSheets("SYNTHESE").Select
For i = 3 To WorkSheets.Count - 2
j = Range("A65536").End(xlUp).Row + 1
With WorkSheets(i)
Cells(j,1).Value = .Range("A1").Value
Cells(j,2).Value = .Range("A2").Value
Cells(j,3).Value = .Range("A3").Value
End With
Next
End Sub

Fermer VBE, sous Excel Alt+F8 pour lancer la macro.

Test et reviens si ca ne va pas.

Cordialement,

Manu/



"Yapi" a écrit dans le message de news:

Bonjour,

Je cherche une macro qui me permette de prendre des données sur
plusieurs
feuilles pour les synthétiser sur une dernière nommée "SYNTHESE"

Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son âge.

Les deux premières feuilles et l'avant dernière nommée TOTAL ne
concernent
pas des salariés.

J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM
Colonne C
:
AGE

Je voudrais maintenant lancer sur une dernière feuille "SYNTHESE" une
macro
qui me recherche sur les feuilles N°3 jusqu'à la feuille précédant
TOTAL,
les
informations qui m'intéressent...

Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci pour
votre
aide,

Yapi














Avatar
Yapi
Bonjour,

Merci pour l'astuce avec MAJ auto... Je vais bosser dessus pour intégrer les
formules que tu as utilisées...

Encore merci

Yapi


Si des onglets sont ajoutés, la Maj sur synthèse est automatique.

JB
On 23 juil, 13:58, JB wrote:
Bonjour,

Dans un module:

Function nomOnglet(n)
Application.Volatile
nomOnglet = Sheets(n).Name
End Function

Function nbOnglets()
Application.Volatile
nbOnglets = Sheets.Count
End Function

En A2 de synthèse (Nom feuille):
=SI(LIGNE()<=nbonglets()-2;nomonglet(LIGNE()+1);"")

En B2: Nom
=SI(ESTERREUR(INDIRECT("'"&$A2&"'!A1"));"";INDIRECT("'"&$A2&"'!A1"))

En C2: Prénom
=SI(ESTERREUR(INDIRECT("'"&$A2&"'!A2"));"";INDIRECT("'"&$A2&"'!A2"))

http://cjoint.com/?hxn55WPffD

JB

On 23 juil, 13:22, Yapi wrote:



Bonjour,

Je cherche une macro qui me permette de prendre des données sur plusieurs
feuilles pour les synthétiser sur une dernière nommée "SYNTHESE"

Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son âge.

Les deux premières feuilles et l'avant dernière nommée TOTAL ne concernent
pas des salariés.

J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM Colonne C :
AGE

Je voudrais maintenant lancer sur une dernière feuille "SYNTHESE" une macro
qui me recherche sur les feuilles N°3 jusqu'à la feuille précédant TOTAL, les
informations qui m'intéressent...

Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci pour votre
aide,

Yapi- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -








Avatar
ylena
Le lundi 23 Juillet 2007 à 13:56 par tissot.emmanuel :
Bonjour,
Lance Visual Basic Editor (Alt+F11)
Insertion>Module
Copier-coller ce code:
Sub Assembler()
Dim i As Long, j As Long
WorkSheets("SYNTHESE").Select
For i = 3 To WorkSheets.Count - 2
j = Range("A65536").End(xlUp).Row + 1
With WorkSheets(i)
Cells(j,1).Value = .Range("A1").Value
Cells(j,2).Value = .Range("A2").Value
Cells(j,3).Value = .Range("A3").Value
End With
Next
End Sub
Fermer VBE, sous Excel Alt+F8 pour lancer la macro.
Test et reviens si ca ne va pas.
Cordialement,
Manu/
"Yapi"
Bonjour,
Je cherche une macro qui me permette de prendre des données sur
plusieurs
feuilles pour les synthétiser sur une dernière nommée
"SYNTHESE"
Exemple :
Chaque salarié à une feuille à son nom
J'ai en A1 le nom du salarié, en A2 son prénom et en A3 son
âge.
Les deux premières feuilles et l'avant dernière nommée
TOTAL ne concernent
pas des salariés.
J'insère une dernière feuille Colonne A : NOM Colonne B : PRENOM
Colonne C
:
AGE
Je voudrais maintenant lancer sur une dernière feuille
"SYNTHESE" une
macro
qui me recherche sur les feuilles N°3 jusqu'à la feuille
précédant TOTAL,
les
informations qui m'intéressent...
Débutant sur VBA, je n'arrive pas à savoir comment faire. Merci
pour votre
aide,
Yapi
Bonjour,
c'est peut etre trop tard mais est que ca serait possible d'avoir le code pour prendre toutes les lignes pleines (pas les lignes vides) des feuilles?
Votre code marche bien mais j'aurais besoin de prendre toutes les lignes et non pas que la 1ere ligne des feuilles.
En vous remerciant pour votre aide