MACRO POUR RECUPERER DES DONNEES SUR PLUSIEURS FEUILLES

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
tissot.emmanuel
Le #4863531
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


JB
Le #4863521
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
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


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

JB
On 23 juil, 13:58, 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


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 -



Yapi
Le #4863201
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"
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







tissot.emmanuel
Le #4862471
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"
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"
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









Yapi
Le #4862201
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"
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"
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














Yapi
Le #4862181
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
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


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 -








Publicité
Poster une réponse
Anonyme