Inversion de cellules

Amadéus a écrit :

Bonjour

Pour tous ceux qui cherchent à mettre le chemin d'accès, le répertoire, le nom du classeur actif, le nom de la feuille active, celui de la seconde ou éniéme feuille du classeur actif,

dans une cellule où dans une formule,

Classeur joint

Cordialement,

Amadéus

https://www.excel-pratique.com/~files/doc/NomClasseur.xls

bonjour Amadéus,

1 - Ces formules m'interessent au + haut point , mais j'aimerais avoir des explications.

est-ce des fonctions complémentaires que tu a créer ?

2 - Je fais des macros depuis MULTIPLAN et je voudrais me convertir en langage VBA.

Je crois que si tu pouvais me traduire la macro1 comme EXEMPLE , je pourrais démarrer !

Ci-joint un fichier qui etait une réponse à un "forumeur".

https://www.excel-pratique.com/~files/doc/o1R6Winversion3.xls

Salutations.....Claude.

Salut le forum

La macro donnée par Amadéus pourrait ressembler à ceci.

Sub InversionCellule()
Dim Cellule1 As Range
Dim Cellule2 As Range
Dim Temp

Set Cellule1 = Application.InputBox("Sélectionner la première cellule", , , , , , , 8)
Set Cellule2 = Application.InputBox("Sélectionner la deuxième cellule", , , , , , , 8)

Temp = Cellule1.Value
Range(Cellule1.Address) = Range(Cellule2.Address)
Range(Cellule2.Address) = Temp

Set Cellule1 = Nothing
Set Cellule2 = Nothing

End Sub

Mytå

Bonjour Mytå, dubois

Petite rectif, cette macro n'est pas de moi.

Pour la partie concernant les formules, il s'agit de simples formules qui utilisent les "noms intégrés" Excel, en fait des noms dans une autre langue qu'excel reconnait.

Ces formules (qui existaient bien avant mon apprentissage à Excel) trouvent justement leur origine dans les fonctions XL4 et Macros XL4 que sont CELLULE et LIRE.CELLULE.

Bien cordialement

merci Mytä , Amadéus de me prêter attention,

OK pour les formules , çà m'est revenu.

Pour la macro ,je trouve Mytä "un peu sec" !

Comme je l'ai dit + haut : je suis un vieux d'Excel qui désire changer de langage macro.

Tel-quel , Mytä ; je ne peux exploiter ton code ! Sinon le copier bêtement et ce n'est pas

le but..............J'aurais souhaiter que :

1 - Le code VBA fasse exactement la même chose que la macro1 ; j'aurais pu alors

mieux analyser et comprendre ,donc apprendre .

2 - Un minimum d'explication entre les lignes.

A noter que cette macro n'a aucun intérêt en soi , mais comme exercice elle peut m'aider.

C'est peut-être pas le bon exemple pour démarrer ?

Croyez-moi je fais des efforts ! Aidez-moi SVP.

Amicalement.....Claude.

Salut Claude

Pour apprendre les macros en VBA après Excel 4, j'ai démarré par enregistrer quelques macros dans lesquels j'ai fait quelques mouvements, changé une formule ou l'autre, effacer une ligne et l'insérer ailleurs, déplacer une cellule, etc. Ensuite, je suis allé étudier le code, puis je l'ai modifié. J'ai constaté que le VBA permet une souplesse énorme et que c'est un vrai langage de programmation. En même temps, c'est plus logique que le 4.

La réponse que Mita t'a donnée est tout à fait juste, mais ce n'est que par l'exercice que tu arriveras à comprendre. Essaie de l'écrire et fait la tourner ligne après ligne pour en comprendre chaque pas. Comme je vois que tu aimes bien programmer, je pense que tu vas très vite saisir le fonctionnement du VBA. Et surtout avec l'aide en ligne, on apprend très vite. (tu sélectionne une fonction ou un nom et tu presses F1)

En tout cas, je t'encourrage à apprendre VBA qui est nettement plus performant que le 4 et en plus qui risque de durer plus longtemps.

Amicalement

Dan de pic

Bonsoir à tous,

J'ai bosser toute la journée sur cette macro ,en modifiant çà et là le code de Mytä.

Il y a des choses que je ne comprend pas encore , mais ça tourne bien et c'est encourageant pour la suite.

Ci-joint: ma première macro VBA. j'attends vos remarques !

https://www.excel-pratique.com/~files/doc/inversion4.xls

J'aurais souhaité que les 1ère InputBox ne comportent pas de fenêtre de saisie ,

c'est-à-dire comme un MsgBox ; mais je n'ai pas réussi.

Comme je veux aller au bout du bout ; créer un programme et non le subir , un

petit coup de pouce serait le bienvenu pour y arriver.

Merci d'avance à tous.

Amicalement votre.

claude.

Salut le forum

Pour ta MessageBox

réponse = MsgBox(("ATTENTION ! " & ActiveCell.Address & "  est bien votre cellule de départ  " & Chr(13) & Chr(13) & "voulez vous continuer ?"), 4)
If réponse = 7 Then Exit Sub
Set Cellule1 = ActiveCell

Devrait faire ce que tu demandes.

Mytå

bonjour,

il faut une pause après ton code , pour sélectionner la 2ème cellule.

J'essaye de mettre un branchement en "a1" mais n'arrive pas à écrire le IF !

If ("a1") = 1 Then

Deuxieme

End If

Réponse = MsgBox(("ATTENTION !.....;

End Sub

Sub Deuxieme

Réponse = MsgBox(("ATTENTION !.....;

Range("a1") = 2

;;;;

End Sub

il y a surement une autre solution.

sinon comment écrire la premiere ligne :" si cellule a1=1" ?

Salutation......Claude

re,

j'oubliais ; il faudrait changer l'intitulé du sujet "Inversion de cellules" non ?

claude.

Salut le forum

Claude voila ton code un peu modifier pour faire la même chose que la MacroXL4

Les variables sont déclarées en Private pour qu'elles gardent leurs valeurs.

Option Explicit

Private Etat As Byte
Private Cellule1 As Range
Private Cellule2 As Range
Private Temp

Sub InversionCellule2()
Dim Reponse As Long

If Etat = 0 Then
Set Cellule1 = ActiveCell
Temp = Cellule1.Value
  Range(Cellule1.Address).Interior.ColorIndex = 3
    Etat = 1
      Exit Sub
End If

Etat = 0

Set Cellule2 = ActiveCell
 Range(Cellule2.Address).Interior.ColorIndex = 3
Reponse = MsgBox(("ATTENTION ! " & Cellule2 & "  va être remplacé par  " & Cellule1 & Chr(13) & Chr(13) & _
"voulez vous continuer ?"), 4)
     If Reponse = 7 Then GoTo Fin
              Range(Cellule1.Address) = Range(Cellule2.Address)
              Range(Cellule2.Address) = Temp

''''''''''ANNULE l'opération et refait la manip inverse si annuler = oui!
Reponse = MsgBox("Les cellules ont été inversées !" & Chr(13) & Chr(13) & "Voulez-vous ANNULER l'opération ?", 4)
    If Reponse <> 7 Then
              Range(Cellule2.Address) = Range(Cellule1.Address)
              Range(Cellule1.Address) = Temp
    End If

Fin:
Union(Range(Cellule1.Address), Range(Cellule2.Address)).Interior.ColorIndex = 0
Set Cellule1 = Nothing
Set Cellule2 = Nothing
End Sub

Mytå

Bonjour au Québec et merci Mytä ,

un seul mot : BRAVO !

Je tournais autour de la solution, mais sans conclure.

Je vais pouvoir petit à petit convertir mes fichiers. Car cet Exemple contient pas mal de

fonctions types.

Pour un premier jet , c'est encourageant !

à+ pour d'autres questions certainement .

Bien amicalement..........Claude.

PS: à ce stade , je ne vois pas le petit bouton "RESOLU" !

Salut Claude et le forum

Au plaisir de se rencontrer sur d'autres ficelles.

Mytå

Rechercher des sujets similaires à "inversion"