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

[ Résolu ] Un transfert de plages vers d'autres plages impossible..????

  • Initiateur de la discussion Initiateur de la discussion Guido
  • 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 !

Guido

XLDnaute Accro
Bonjours le Forum

Je reviens vers Vous Tous,

J'aimerais transférer le contenu des plages dans la pages suivantes et dans les plages

biens définies...

Voir le petit fichier

Merci

Guido
 

Pièces jointes

Re
je pense que le fil est clot ,
mais je n'ai pas compris le Principe de ce "Classement avec doublon"
je vais tenter de comprendre en repartant du début Lol(je vais chercher le Fil)
Bonne fin de journée
Amicalement
Jean marie
 
Re
Oui ,JBARBE est un pro pour les macros, et formules
Guido
Re,
N’exagérons pas Guido mes macros sont simples comme je les ais apprise depuis plusieurs années !
Mais je m'améliore de jour en jour grâce à ED et ces quelques bénévoles qui se reconnaîtrons et dont le savoir sur Excel est nettement supérieur à moi !
Amitié et bonne soirée !
 
Bonsoir Guido, JBARBE, ChTi160,

Dans ces problèmes de transfert le plus simple est d'établir une correspondance entre les plages sources et les plages de destination (on peut alors les adapter comme on veut) :
Code:
Sub Transfert()
Dim Fs As Worksheet, Fd As Worksheet, Ps, Pd, i&, j%, c As Range, lig As Variant, k%
Set Fs = Sheets("PRONO_DE_Base") 'feuille source, à adapter
Set Fd = Sheets("PRONO_NET") 'feuille de destination, à adapter
Ps = Array("A7", "R9", "R11:X12") 'adresses des plages sources, à adapter
Pd = Array("A7", "D9", "D11:J12") 'adresses des plages de destination, à adapter
For i = 1 To 271 Step 30
  For j = 1 To 79 Step 13
    Set c = Fd.Cells(i, j)
    lig = Application.Match(Trim(c) & " *", Fs.Columns(1), 0)
    For k = 0 To UBound(Ps)
      If IsError(lig) Then c.Range(Pd(k)) = "" Else c.Range(Pd(k)) = Fs.Cells(lig, 1).Range(Ps(k)).Value
Next k, j, i
Fd.Activate 'facultatif
End Sub
Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re
je pense que le fil est clot ,
mais je n'ai pas compris le Principe de ce "Classement avec doublon"
je vais tenter de comprendre en repartant du début Lol(je vais chercher le Fil)
Bonne fin de journée
Amicalement
Jean marie

Re

Jean Marie

Voici le fichier plus important avec plus d'onglets,

Donc voici l'équivalant de ma demande en tableaux

Je n'ai pas réussis a l'adapter sur la page PRONO NET. Sinon toutes les

cellule deviennent #Nombres...,et je sais plus aller de l'avant.

JBARBE

Pour ce qui concerne les fichiers concernant le Turf tu est celui qui a eu le plus de patience avec Moi,

les autres ont jeté l'éponge car je ne savais pas m'expliqué dans mes demandes...

C'est mon handicap, mais bon...

J'ai peut être d'autres qualités ???lol

A Plus

Guido
 

Pièces jointes

Re

Alors Ca ??surprise, bonne surprise Job75

Salut Job75

Merci pour ta proposition.

Je regarde est te dis

Entre temps je viens de poster avec des précisions pour l'obtention du classement final

selon les critères et possibilités d'affichage ou les deux onglet possibles .??

Job, svp pour insérer une macros avec option explicite y as t'il un boutons raccourci..,SVP,Merci

a plus

Guido
 
Re,
(on peut alors les adapter comme on veut)
Si par exemple on veut renseigner aussi les cellules D8 et D13:J13 on utilisera :
Code:
Sub Transfert()
Dim Fs As Worksheet, Fd As Worksheet, Ps, Pd, i&, j%, c As Range, lig As Variant, k%
Set Fs = Sheets("PRONO_DE_Base") 'feuille source, à adapter
Set Fd = Sheets("PRONO_NET") 'feuille de destination, à adapter
Ps = Array("A7", "R8:R9", "R11:X13") 'adresses des plages sources, à adapter
Pd = Array("A7", "D8:D9", "D11:J13") 'adresses des plages de destination, à adapter
For i = 1 To 271 Step 30
  For j = 1 To 79 Step 13
    Set c = Fd.Cells(i, j)
    lig = Application.Match(Trim(c) & " *", Fs.Columns(1), 0)
    For k = 0 To UBound(Ps)
      If IsError(lig) Then c.Range(Pd(k)) = "" Else c.Range(Pd(k)) = Fs.Cells(lig, 1).Range(Ps(k)).Value
Next k, j, i
Fd.Activate 'facultatif
End Sub
On formatera ces nouvelles cellules comme on veut.

Fichier (2).

Bonne fin de soirée.
 

Pièces jointes

Dernière édition:
Re,

Aux posts #18 et #21 j'ai remplacé lig = Application.Match(c & "*", Fs.Columns(1), 0)

par lig = Application.Match(Trim(c) & " *", Fs.Columns(1), 0)

En effet si dans la feuille source la course R.x-C.1 est placée après R.x-C.10 c'est cette dernière qui aurait été prise en compte à la place de la première.

A noter que dans la feuille destination il y a un espace superflu après R.1-C.1, c'est pour ça que j'utilise Trim.

Bonne nuit.
 
Bonjour Guido
Bonjour Le Fil ,Le Forum
(un coucou particulier à Job75)
une approche de ce que j'ai cru comprendre Lol
Question : peut il y avoir dans la feuille "PRONO_DE_BASE" des erreur du genre le Gagnant n'est pas dans la Liste des arrivées "ex en R9 il y a 14 et pas dans la plage Q12:X12
ou l'indication du nombre de partants en A7 , sans indication de Course en A1 etc etc
ou est ce une erreur de mise en forme lors de la mise sur le Forum ?
la procédure a été mise dans la méthode :

VB:
Private Sub Worksheet_Activate()
Initialise_Reunions
End Sub
pourrais tu m'expliquer comment ce passe la démarche ?
tu récupères en "PRONO_DE_BASE" ex : en Q12:X12 les pronostics , puis ensuite tu mets toi le Gagnant ?
Essai de m'expliquer , merci para avance
Tu testes et tu me dis , si j'ai compris Lol
Bonne journée
Amicalement
Jean marie
 

Pièces jointes


Re

Si R9 contient 14 ou autres mais pas son doublons dans la plage Q12:X12

le classement ne change pas.

Le n° Ggt se met avec le transfert

Merci pour tout

Guido
 
Bonjour Guido, le forum,

Si maintenant on veut le gagnant en tête de la ligne TTG utiliser le couper-insérer :
Code:
Sub Transfert()
Dim Fs As Worksheet, Fd As Worksheet, Ps, Pd, i&, j%, c As Range, lig As Variant, k%, g
Set Fs = Sheets("PRONO_DE_Base") 'feuille source, à adapter
Set Fd = Sheets("PRONO_NET") 'feuille de destination, à adapter
Ps = Array("A7", "R9", "R11:X12") 'adresses des plages sources, à adapter
Pd = Array("A7", "D9", "D11:J12") 'adresses des plages de destination, à adapter
Application.ScreenUpdating = False
For i = 1 To 271 Step 30
  For j = 1 To 79 Step 13
    Set c = Fd.Cells(i, j)
    lig = Application.Match(Trim(c) & " *", Fs.Columns(1), 0)
    For k = 0 To UBound(Ps)
      If IsError(lig) Then c.Range(Pd(k)) = "" Else c.Range(Pd(k)) = Fs.Cells(lig, 1).Range(Ps(k)).Value
    Next k
    '---gagnant en tête de la ligne TTG---
    g = c.Range(Pd(1)) 'gagnant
    With c.Range(Pd(2)).Rows(2)
      If g <> "" And g <> .Cells(1) Then
        For k = 2 To .Columns.Count
          If .Cells(k) = g Then .Cells(k).Cut: .Cells(1).Insert: Exit For 'couper-insérer
        Next k
      End If
    End With
Next j, i
Fd.Activate 'facultatif
End Sub
Edit : boucle raccourcie For k = 2 To .Columns.Count

Fichiers (1 bis) et (2 bis).

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

Réponses
2
Affichages
110
Réponses
2
Affichages
163
  • Question Question
Microsoft 365 Bloccage Excel
Réponses
1
Affichages
377
W
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…