Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Ecrire sur deux feuilles en même temps

  • Initiateur de la discussion Initiateur de la discussion maval
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

maval

XLDnaute Barbatruc
Bonjour,

J'aimerai savoir si par macro on pouvais écrire sur 2 feuilles en même temps?

je rentre une liste de noms et N° d'équipe en feuille" Inscription" colonnes "C3😀200" j'aimerai rentrer les N° d'équipes et les deux noms sur la feuille "Classement" en même temps

ex: feuille Inscription : "C3 = 1, D3 =Guillaume, D4 = Benoit"
feuille Classement:" E3 = 1, F3 =Guillaume, G3 = Benoit"

D'avance merci à qui pourra m'aider.
Cordialement

Maval
 

Pièces jointes

Re : Ecrire sur deux feuilles en même temps

Bonjour maval, salut Papou 🙂

Une solution sans boucle avec SpecialCells :

Code:
Sub Transfert()
Dim tablo, r As Range
With Sheets("Inscription")
  tablo = .Range("C3", .[D65536].End(xlUp))
End With
Application.ScreenUpdating = False
With Sheets("Classement")
  .[E3:G65536].ClearContents
  .[E3:F3].Resize(UBound(tablo)) = tablo
  Set r = .[E3:E65536].SpecialCells(xlCellTypeBlanks)
  Intersect(r.EntireRow, .[F:F]).Copy .[G3]
  Intersect(r.EntireRow, .[E:F]).Delete xlUp
  '.Activate 'si nécessaire
End With
End Sub
La macro s'exécute quand on active la feuille Classement.

Mais on pourrait la lancer autrement, par un bouton par exemple.

Fichier joint.

Edit : s'il n'y a qu'un seul nom dans la liste la macro beugue sur SpecialCells.

Pour l'éviter ajouter On Error Resume Next avant cette ligne.

A+
 

Pièces jointes

Dernière édition:
Re : Ecrire sur deux feuilles en même temps

Bonjour Papou,

Excellent, merci beaucoup, mais si je peut te demander serait-il pas possible au lieu de mettre un bouton pour activer la feuille faire une copie automatique bien sur si possible?

Bonne W.E et bonne Fêtes et merci encore

@+
Max
 
Re : Ecrire sur deux feuilles en même temps

Re,

Tiens un truc intéressant, en décalant la dernière cellule en colonne D :

tablo = .Range("C3", .[D65536].End(xlUp)(2))

on évite tout problème si le nombre de noms est <2 :

Code:
Sub Transfert()
Dim tablo, r As Range
With Sheets("Inscription")
  tablo = .Range("C3", .[D65536].End(xlUp)(2))
End With
Application.ScreenUpdating = False
With Sheets("Classement")
  .[E3:G65536].ClearContents
  .[E3:F3].Resize(UBound(tablo)) = tablo
  Set r = .[E3:E65536].SpecialCells(xlCellTypeBlanks)
  Intersect(r.EntireRow, .[F:F]).Copy .[G3]
  Intersect(r.EntireRow, .[E:F]).Delete xlUp
  '.Activate 'si nécessaire
End With
End Sub
SpecialCells ne peut plus beuguer.

Fichier (2) à tester avec 1 ou 0 nom.

A+
 

Pièces jointes

Re : Ecrire sur deux feuilles en même temps

Salut Job75

Je te remercie beaucoup

Mais comme j'avais demander à Papou, est-il pas possible de faire une copie automatique sans passer par l'activation de la feuille ni un bouton?

Bonne W.E et bonne Fêtes et merci encore

@+
Max
 
Re : Ecrire sur deux feuilles en même temps

Re,

On peut bien sûr lancer la macro par ce code dans la feuille Inscription :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Transfert
End Sub
Il vaut mieux alors supprimer Application.ScreenUpdating = False

La macro sera lancée à chaque modification, quel est l'intérêt ?

A+
 
Re : Ecrire sur deux feuilles en même temps

Bonjour maval, Papou, le forum,

Je m'étonne que les formulistes ne se soient pas manifestés.

Formule unique en E3 de la feuille Classement :

Code:
=INDEX(Inscription!$C$3:$D$202;1+2*(LIGNES(E$3:E3)-1)+(COLONNES($E3:E3)=3);MIN(COLONNES($E3:E3);2))
à copier sur la plage E3:G102.

Fichier joint.

A+
 

Pièces jointes

Re : Ecrire sur deux feuilles en même temps

Re,

Si l'on veut pouvoir supprimer ou insérer des lignes dans le tableau source :

- définir le nom Table par la formule :

Code:
=DECALER(Inscription!$C$2:$D$2;1;;2*NB(Inscription!$C:$C)+1)
- formule en Classement!E3 à copier vers la droite et le bas :

Code:
=SI(LIGNES(E$3:E3)>LIGNES(Table)/2;"";INDEX(Table;1+2*(LIGNES(E$3:E3)-1)+(COLONNES($E3:E3)=3);MIN(COLONNES($E3:E3);2)))
Plus nécessaire de s'occuper des valeurs zéro.

Fichier (2).

Edit : bon c'est quand même plus simple d'utiliser le fichier (1 bis) avec :

Code:
=INDEX(DECALER(Inscription!$C$2:$D$2;1;;200);1+2*(LIGNES(E$3:E3)-1)+(COLONNES($E3:E3)=3);MIN(COLONNES($E3:E3);2))
A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…