permutage de cell. si ok

  • Initiateur de la discussion pilou
  • Date de début
P

pilou

Guest
Bonjour everybody

j'ai une demande un peu bizarre !!!!

je voudrais que sur mon fichier excel, sur demande, il puisse me permuter 2 cellules entre elles

ex (A1) = toto (c1) = titi
alors excel me pose la question :
souhaitez vous permuter oui non
si oui
(A1) deviens titi et (C1) deviens toto
et on passe a la ligne suivante

ce serait genial si vous avienz une soluce pour ca
merci a tous
 

Hervé

XLDnaute Barbatruc
Bonjour pilou

ce type de code te demande si tu veux permuttez pour chaque ligne en colonne A :


Sub Bouton1_QuandClic()
Dim c As Range
Dim temp

For Each c In Range('a1:a' & Range('a65536').End(xlUp).Row)
       
If MsgBox('Voulez-vous permutter ' & c & ' et ' & c.Offset(0, 2) & ' ?', vbYesNo) = vbYes Then
                temp = c
                c = c.Offset(0, 2)
                c.Offset(0, 2) = temp
       
End If
Next c
       
End Sub


Par contre, j'espère que tu n'as pas trop de données car ca va vite te fatiguer ces msgbox, non ?

salut
 
P

pilou

Guest
merci herve c ce qu'il me faut

mais je vais abuser car vraiment vba je connais pas

si je veux permuter colonne P en colonne C suivant la reponse que dois je modifier

merci de ton aide
c cool
 
P

pilou

Guest
et et et.....
un bouton stop please !!!!!!!!
et pourquoi pas une zone qui me permette de reprendre à une ligne donnee

merci merci
je sais j'abuse

promis je me mets a apprendre le vba.......
 

Hervé

XLDnaute Barbatruc
re :)

je me doutais bien que ca te lasserait ces msgbox :)

j'ai rajouter un bouton annuler qui permet de sortir de la macro (attention, toutefois les précédentes modifs ne seront pas annuler)


Sub lolo_Bouton1_QuandClic()
Dim c As Range
Dim temp

For Each c In Range('c1:c' & Range('c65536').End(xlUp).Row)
       
Select Case MsgBox('Voulez-vous permutter ' & c & ' et ' & c.Offset(0, 13) & ' ?', vbYesNoCancel)
               
Case 6: 'reponse oui
                temp = c
                c = c.Offset(0, 13)
                c.Offset(0, 13) = temp
               
Case 2: Exit Sub 'reponse annuler
       
End Select
Next c

End Sub


pour permuttez la colonne c avec la colonne P :

For Each c In Range('c1:c' & Range('c65536').End(xlUp).Row)

ce code va te faire parcourir toutes les cellules de la colonne C.

la cellule P se trouve 13 colonnes après la C, on utilise donc c.offset(0,13) qui permet de se déplacer de 13 colonnes sur la meme ligne.

salut
 

Hervé

XLDnaute Barbatruc
re

la version te permettant de reprendre le code à la ligne ou tu t'etais arreter :


Public ligne As Integer
Sub lolo_Bouton1_QuandClic()
Dim c As Range
Dim temp

If ligne = 0 Then ligne = 1

If ligne > 1 Then
       
If MsgBox('reprendre à la ligne ' & ligne & ' ?', vbYesNo) = vbNo Then
                ligne = 1
       
End If
End If

For i = ligne To Range('c65536').End(xlUp).Row
       
Select Case MsgBox('Voulez-vous permutter ' & Cells(i, 3) & ' et ' & Cells(i, 16) & ' ?', vbYesNoCancel)
               
Case 6: 'reponse oui
                temp = Cells(i, 3)
                Cells(i, 3) = Cells(i, 16)
                Cells(i, 16) = temp
               
Case 2 'reponse annuler
                ligne = i
               
Exit Sub
               
       
End Select
Next i
ligne = 0
End Sub


a placer dans un module standard.

salut
 

pat1545.

XLDnaute Accro
Salut,

largement inspiré du code' de Hervé mais à mettre dans le code de la feuille et double clic sur une cellule de la colonne C (entre C1 et C100):

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect([C1:C100], Target) Is Nothing Then Exit Sub
Dim temp As Variant
Select Case MsgBox('Voulez-vous permutter ' & Cells(ActiveCell.Row, 3) & ' et ' _
& Cells(ActiveCell.Row, 16) & ' ?', vbYesNoCancel)
Case 6: 'reponse oui
temp = Cells(ActiveCell.Row, 3)
Cells(ActiveCell.Row, 3).Value = Cells(ActiveCell.Row, 16).Value
Cells(ActiveCell.Row, 16) = temp
Case 2 'reponse annuler
Exit Sub
End Select
End Sub

Patrick
 

Discussions similaires

Réponses
7
Affichages
550

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha