Bonjour à tous,
Voici un petit code qui permet d'inverser les valeurs de la cellule active avec la cellule à droite de celle-ci.
J'ai du l'utiliser lors d'un traitement semi-automatique d'extrait de compte. Parfois, le débit et le crédit étaient inversés et je voulais rapidement inverser les données. Un autre avantage est que la formule n'est pas perdue. Un couper-coller aurait remplacé la formule par un #REF.
Voici donc un fichier exemple :
cliquez ici pour télécharger
Et le code:
Vous noterez l'utilisation de l'array (variable tableau : arrInverseValeurs) qui permet de ne coller les données qu'une seule fois, et donc d'économiser un recalcul automatique.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'Definition des variables Dim arrInverseValeurs As Variant ReDim arrInverseValeurs(1 To 1, 1 To 2) As Variant 'on peut aussi ajouter ici une verification, par exemple If ActiveCell.Column <> 2 Or ActiveCell.Row <= 7 Then Exit Sub 'on stocke les valeurs arrInverseValeurs(1, 1) = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value arrInverseValeurs(1, 2) = Cells(ActiveCell.Row, ActiveCell.Column).Value 'on rapatrie les donnees avec les valeurs inversees 'l'utilisation du tableau permet de gagner du temps 'en n'écrivant qu'une seule fois les valeurs dans la feuille Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.Row, ActiveCell.Column + 1)).Value = arrInverseValeurs 'on sort de la formule Cancel = True End Sub
Chouette, ce code.
C'est donc avec la ligne 13 du code comme sur cette page (et non du fichier-exemple à télécharger) que c'est plus général et qu'on n'a pas à indiquer le numéro des colonnes à chaque fois où on sort des colonnes de l'exemple.
Merci !
et ça marche avec des String's, évidemment.
Oui, par contre, je pense que pour des valeurs d'erreurs ou des formules, ca ne fonctionnera pas.
et si, après avoir inversé, on re-double-clique sur la même cellule, ça rétablit l'ordre initial. Trop bon.