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

Décaler des valeurs

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 !

kabale53

XLDnaute Occasionnel
Bonjour

Je souhaite décaler dans la colonne U des valeurs situées initialement dans la colonne Q et ce selon le nouveau classement en T des N° situés initialement dans la colonne P.

Merci.
 

Pièces jointes

Bonjour Kabale, bonjour le forum,

Peut-être comme ça :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TN() As Variant 'déclare la variable TN (Tableau des Numéros)
Dim TV() As Variant 'déclare la variable TV (Tableaux des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim X As Integer 'déclare la variable X (incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set O = Worksheets("Feuil1") 'définit l'onglet O
O.Columns("U:U").ClearContents 'efface les données en colonne U de l'onglet O
DL = O.Cells(Application.Rows.Count, "P").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne P de l'onglet O
X = 1 'initialise la variable X
For I = 1 To DL 'boucle sur toutes les lignes I de 1 à DL
  'si la cellule ligne I colone P de l'onglet O n'est pas vide, redimensionne le tableau des numéros TN,
  'récupère la ligne I dans le tableau des numéros, incrémente X
  If O.Cells(I, "P").Value <> "" Then ReDim Preserve TN(X): TN(X) = I: X = X + 1
Next I 'prochaine ligne de la boucle
For X = 1 To UBound(TN) 'boucle sur tous les éléments du tableau des numéros TN
  'définit la cellule de destination DEST (recherche X entier dans la colonne T)
  Set DEST = O.Columns("T:T").Find(X, , xlValues, xlWhole)
  ReDim Preserve TV(X) 'redimensionne le tableau des valeurs TV(X)
  TV(X) = O.Cells(TN(X), "P").CurrentRegion 'définit la tableau TV(X) (les cellules adjacentes à TN(X))
  DEST.Resize(UBound(TV(X), 1), UBound(TV(X), 2)).Value = TV(X) 'renvoie le tableau TV(X) dans DEST redimensionnée
Next X 'prochain élément de la boucle
End Sub

[Édition]
Bonjour PierreJean, nos posts se sont croisés... Je vois que tu fait la traite des blanches... Code toujours impeccable !...
 
- 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
13
Affichages
241
Réponses
5
Affichages
150
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…