recopier en sens inverse

  • Initiateur de la discussion scytale54
  • Date de début
S

scytale54

Guest
comment recopier une liste d'une colonne en sens inverse dans une autre colonne. Exemple a f y dans la colonne A en y f a dans la colonne B
 
A

AV

Guest
Ave,

''...Exemple a f y dans la colonne A en y f a dans la colonne B ...''

Fonctions persos à mettre dans un module ordinaire.

Function ARABIC(Cellule As Range) As String 'avant XL2000
For C = 0 To Len(Cellule)
ARABIC = ARABIC & Right(Left(Cellule, Len(Cellule) - C), 1)
Next
End Function

Function ARABIC2(Cellule As Range) As String 'à partir de XL2000
ARABIC2 = StrReverse(Cellule)
End Function

Utilisation dans la feuille de calcul :
= ARABIC(A1)

AV [aaa]
 

andré

XLDnaute Barbatruc
Salut,

Les valeurs en colonne A depuis A1.
En B1 : =SI(A1='';'';INDIRECT('A'&NBVAL(A:A)-LIGNE()+1))
formule à copier vers le bas
Ne fonctionne que s'il n'y a pas de cellules vides.

Si tu ne prviens pas à l'adapter à ton cas, mets un exemple en pièce jointe.

Â+
 
S

scytale54

Guest
bonjour,

ça marche mais je si je peux copier toutes les cellules en A en une fois, je dois coller une à la fois les cellules en B. Comment coller en une fois et en sens inverse les cellules de la colonne A?

Excel est formidable, mais long à maîtriser pour un débutant!
 
K

kaze

Guest
Bonjour le forum,

Excusez moi de m'introduire dans cette file.
Les différentes formules proposées sont intéressantes. Voir aussi une autre formule qui fonctionne avec des cellules vides sur ce lien:
Lien supprimé

Toutes ces formules recopient en sens inverse les données mais est il possible de recopier aussi en sens inverse des couleurs (fond de cellules ou chiffres en couleurs)? Si oui comment?

Bonne journée
 
A

AV

Guest
Après relecture, il me semble que l'interprétation de la question, par André, doit être la bonne...
Pour abonder…
Avec une plage contenant éventuellement des cellules vides et pouvant être déplacée (ce que ne permet pas la fonction Indirect(Lettre de colonne &….)) :
Matricielle à valider par ctrl + maj +entrée à mettre en ligne 1 d'une quelconque colonne et à recopier en..xxx
=INDIRECT(ADRESSE(GRANDE.VALEUR(SI(plage *** '';LIGNE(plage);'');LIGNE());COLONNE(plage)))

*** Remplacer par l'opérateur de comparaison ''différent de''
AV [aaa]
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Pourquoi passer par Indirect() quand on peut y aller franchement ?

Si on démarre en C2 :
=INDEX(A$2:A$20;GRANDE.VALEUR(SI(A$2:A$20différent de'';LIGNE(A$2:A$20));LIGNES(C$2:C2))-1)
ou bien
=INDEX($A:$A;GRANDE.VALEUR(SI(A$2:A$20différent de'';LIGNE(A$2:A$20));LIGNES(C$2:C2)))

Les mêmes au conditionnel :
=SI(NBVAL(A$2:A$20)<LIGNES(C$2:C2);'';INDEX(A$2:A$20;GRANDE.VALEUR(SI(A$2:A$20différent de'';LIGNE(A$2:A$20));LIGNES(C$2:C2))-1))

=SI(NBVAL(A$2:A$20)<LIGNES(C$2:C2);'';INDEX($A:$A;GRANDE.VALEUR(SI(A$2:A$20différent de'';LIGNE(A$2:A$20));LIGNES(C$2:C2))))

(matricielles, à valider par ctrl, maj et entrée)
 

Monique

Nous a quitté
Repose en paix
Re,

Dans le fichier joint,
pour ne pas avoir à copier-coller 1 formule dans les autres cellules :
sélectionner entièrement la plage et valider par ctrl, maj et entrée
(mais ce n'est pas plus pratique, à mon avis) [file name=EnversScytale.zip size=1993]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EnversScytale.zip[/file]
 

Pièces jointes

  • EnversScytale.zip
    1.9 KB · Affichages: 121
A

AV

Guest
Salut Monique,

''..Pourquoi passer par Indirect() quand on peut y aller franchement ?..''
2 réponses possibles :
Réponse 1 : 'Pourquoi pas' ?
Réponse 2 : 'Pour éviter de passer par INDEX'
;-)

Remarque :
** INDEX($A:$A ''plombe'' la formule en cas de déplacement de la plage source

Pour ne pas être tributaire des possibles déplacement de la plage source et des erreurs
En démarrant en ligne 1 et matricielle :
=SI(ESTERR(GRANDE.VALEUR(SI(PLAGE différent de '';LIGNE(PLAGE);'');LIGNE()));'';INDIRECT(ADRESSE(GRANDE.VALEUR(SI(PLAGE différent de'';LIGNE(PLAGE);'');LIGNE());COLONNE(PLAGE))))

Pourquoi pas une petite macro :
Sub zzz()
x = 1
For i = [A65536].End(3).Row To 1 Step -1
If Cells(i, 'A') = '' Then
Else: Cells(x, 'B') = Cells(i, 'A'): x = x + 1
End If
Next
End Sub

AV [aaa]
 

andré

XLDnaute Barbatruc
Resalut,

Coller (ou taper) la formule en B1, puis cette cellule étant sélectionnée, passer sur le coin inférieur droit de B1 jusqu'à obtenir un curseur en forme de '+' et double-cliquer.
La formule sera copiée dans la colonne B sur un nombre de cellules égal aux cellules avec valeur de la colonne A.

Â+
 
K

kaze

Guest
Bonjour le forum,

Au niveau formules on est servi! impressionnant!
J'ai remarqué aussi la macro d'AV qui me plaît. Pourrais tu AV expliquer le code de cette macro?
D'autre part est il possible de faire suivre les couleurs des cellules dans l'inversion? J'ai introduit des chiffres en couleurs et fond de cellules coloriés directement ainsi qu'obtenus avec une MFC mais rien ne suit avec les différentes solutions proposées dans cette file. Quelqu'un aurait il une solution?

Bon dimanche.
 

Statistiques des forums

Discussions
312 342
Messages
2 087 436
Membres
103 545
dernier inscrit
agent3