Swap

  • Initiateur de la discussion Moa
  • Date de début
M

Moa

Guest
Bonsoir à Toutes et tous !

Existe-t-il une fonction ou une macro qui ferait la fonction "SWAP".

C'est à dire de pouvoir intervertir le contenu de deux cellules.

Ex : en A1=bla bla en B6 = Blo Blo, je sélectionne mes deux cellules, et hop, d'un simple clic, j'inverse le contenu de l'une à la place de l'autre, soit
B6 = Bla Bla et A1= Blo Blo.

Voilà, si qqn à déjà fait un truc de ce genre, Merci d'avance, de votre aide.

@ +

Moa
 
C

Celeda

Guest
Bonsoir,

M a :

tu m'étonnes toujours . Cela sert à quoi Swap ? On fait quoi avec.
Peux-tu m'expliquer en quelques mots,SVP.

J'ai trouvé sur cet excellent site une petite macro
Ce site n'existe plus
Sub Swap(ByRef t1, ByRef t2)
Dim t
t = t1
t1 = t2
t2 = t:
End Sub




Bonne fin de samedi soir et merci.
Celeda
 
M

Moa

Guest
Salut Celeda et merci à toi, mais je viens d'essayer cette macro, et rien à y faire, t'es sure qu'il ne manque pas qqch.

Avant de poser la question, j'ai fait rechercher et je n'ai eu aucune réponse.

T'as plus de chance que moi.

Bon, j'y retourne

A toute

Moa
 
C

Celeda

Guest
Rebonsoir,

Moa : sorry mon grand mais je suis partie diner.

Donc, je repends :

- c'est quoi le Swap ?
je suis allée sur différents sites - et j'ai le choix entre

''Type de programme gérant l'échange entre la mémoire vive et les mémoires de masse, pour accélérer le fonctionnement du système. Il utilise un swapfile (aussi appelé fichier d'échange). Syn. échangeur (Version Française), ou encore une partition de swap, carrément (du côté du monde Unix)''

ou fonction financière et là surprise - surprise je tombe sur deux sites référencés ; celui de stephane

http://xlbysteph.free.fr/aideinformatique/actionole.htm

et je ne m'en sors pas

et celui de DavidXLD qui me raméne sur la page Gestion Finances.
Ce qui veut dire que parmi ceux qui ont mis des programmes sur le site, quelqu'un a du insérer un ''SWAP'' .


ou celui de disciplus dans lequel j'ai trouvé la macro (qui ne fonctionne pas je confirme - il nous manque peut-être quelque chose mais mes débuts en vna ne me permettent pas de te dire ce qui cloche - d'ailleurs il faudrait leur signaler......)

Tu vois, Moa, je fais des efforts avec ma souris mais je

Merci si tu peux m'éclairer. Echange de données ?

Bon dimanche

Celeda
 
M

Moa

Guest
Re-Celeda

Oui, un swap, c'est un terme qui est utilisé en Vidéo, en électronique et informatique.

En fait le principe du swap, est d'inverser deux données, tout simplement.

Tu sélectionnes les deux données que tu veux interchanger et tu fais ton swap, c'est tout.

Je ne vois pas ce que je peux te dire de plus.

Dans mon cas, voilà ce que je voudrais faire:

J'ai deux colonnes de 1000 données chacunes. disons A1:A1000 et B1:B1000.

En C2 j'ai une liste de choix de 1 à 5, en E2 idem.

Admettons que C2=1 et que E2=5, et bien je veux qu'à chaque fois que ma macro trouvera un "1" dans ma colonne "A" et que sur la même ligne, mais en colonne B elle trouvera un "5", qu'elle inverse ceux deux valeurs.


Ex : Avant ma macro :

A1 = 2 B1 = 3
A2 = 2 B2 = 1
A3 = 1 B3 = 5
A4 = 5 B4 = 1

Après ma macro :

A1 = 2 B1 = 3
A2 = 2 B2 = 1
A3 = 5 B3 = 1
A4 = 5 B4 = 1


Donc dans ce cas intervertir les valeurs de A3 et B3.

Cela fait déjà plusieurs heures que je suis sur le prob, et c'est pas évident.

Voilà !

Bonne nuit et à demain


Moa
 
C

Celeda

Guest
Bonne nuit le Forum,

Moa : Merci, je commence à comprendre un peu.
J'ai donc été fouillé un peu et essayer de voir si quelque chose existait, mais négatif.

Mais d'autre part, peux-tu encore satisfaire ma curiosité, (tu sais bien les femmes......) est-ce toujours pour le Foot ?
Tu parles de macro mais je me demande si une fonction avec des Si ne pourrait pas t'aider ?
Bon à cette heure là, mes idées ne sont plus plus très claires alors on verra demain si quelqu'un peut faire avancer le post.

Merci pour l'info mais je ne sais pas dans quel cas je pourrais à avoir à inverser des données...............


Bon dimanche
Celeda
 
M

Mytå

Guest
salut Moa et Celeda

Enfin je suis de retour pas tres en forme mais bon apres une chirugie qui court le marathon :)))

Voila Moa une petite Macro Swap

Option Explicit
Sub Swap()
'
' Macro pour Moa par Mytå (02-mars-2003)
'
Dim rang As Long, temp As String
For rang = 1 To 1000
If Cells(rang, 1).Value = Cells(2, 3).Value And Cells(rang, 2).Value = Cells(2, 5).Value Then
temp = Cells(rang, 1).Value
Cells(rang, 1).Value = Cells(rang, 2).Value
Cells(rang, 2).Value = temp
End If
Next rang
End Sub

Suffit d'adapter a d'autre cellule que A1:A1000 , B1:B1000, C2 et E2 comme reference pour classement

Vite fait a+ Mytå
 
C

Celeda

Guest
Bonjour,

Mytå = tu es un chef !


Mais j'ai besoin de comprendre. Tu sais que je suis un beginner level -1 en vba et que j'essaie de comprendre. Donc peux-tu m'expliquer pour la variable temp as string (string je sais mais je n'en porte pas !) donc pour temp = tu introduis une troisième variable ? ou bien ?

Merci beaucoup en attendant (et rétablis toi)

(Tu vois Moa, grâce à toi j'ai ''dansé'' sur le Swap un samedi soir!)


Bonne fin de soirée
Celeda
 
M

Mytå

Guest
Bonsoir Celeda,

Merci pour les souhaits de retablissement

Je me sert de temp pour ne pas perdre la valeur de la cellule que je remplace pour ensuite la recopier dans l'autre cellule

Mytå
 
M

Moa

Guest
Salut Mytå et gros merci à toi, ça marche impec.

Ayant en fait une dizaine de colonnes, j'ai modifié ta macro, comme suit, afin d'avoir le choix des deux colonnes à interchanger


Sub Swap()
'
' Macro pour Moa par Mytå (02-mars-2003)
'
Dim rang As Long, temp As String
For rang = 1 To 1000
If Cells(rang, [g2]).Value = Cells(2, 3).Value And Cells(rang, [j2]).Value = Cells(2, 5).Value Then
temp = Cells(rang, [g2]).Value
Cells(rang, [g2]).Value = Cells(rang, [j2]).Value
Cells(rang, [j2]).Value = temp
End If
Next rang
End Sub

Et cela marche très bien, en J2 et G2, j'ai deux listes déroulantes (de 1 à 10)
et je choisis donc, les deux colonnes qui m'intéresse.

Puis après réflexion, je me suis dit, tiens, mais je pourrais demander de tout interchanger, et voilà ce que cela donne :

Sub Swap()
'
' Macro pour Moa par Mytå (02-mars-2003)
'
Dim rang As Long, temp As String
For rang = 1 To 1000

temp = Cells(rang, [g2]).Value
Cells(rang, [g2]).Value = Cells(rang, [j2]).Value
Cells(rang, [j2]).Value = temp

Next rang
End Sub

Et cela fonctionne aussi très bien.

J'ai donc voulu l'adapter à mon programme, et là deux hics :

Eh oui, mes colonnes à interchanger ne commencent qu'en C16, et je ne veux surtout pas que la macro touche à mes cellules du dessus.

J'ai donc modifié : "For rang = 1 to 1000" par "For rang = 16 to 1000"

Et cela fonctionne très bien aussi.

Le deuxième hic, est que selon les tableaux que j'importe, ma valeur 1000, n'est plus bonne.

En effet, des fois j'importe des tableaux de 5000 voir 8000 lignes.

Donc, comment dans "For rang = 16 to 1000" puis je remplacer le mille par une variable ?

Si c'est possible..héhé...!!

Merci beaucoup à toi

@ +

Moa
 
M

Moa

Guest
Je réponds à ma question :

For rang = 16 to [B2]

Sachant qu'en B2, j'ai une formule qui m'affiche la valeur de la dernière ligne du tableau.

Et voilà...

Gros merci à Mytå, de m'avoir fait 90 % du travail.

@ +

Et Bonne nuit à tous les couches-tard

Moa
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Erreur VBA
Réponses
2
Affichages
239

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 083
dernier inscrit
Stef06