Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

demande explication sur une macro proposée par le forum

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

BRUNO62

XLDnaute Occasionnel
Bonsoir,

Je souhaite avoir une une explication sur cette macro proposée par STAPLE 1600 le 12/09/2010.

Sélectionnes la cellule E1 puis lances la macro ci-dessous

Code:
Sub a()
Dim r As Range, c As Range
Set r = ActiveCell.CurrentRegion.Columns(2)
With r
.SpecialCells(4).FormulaR1C1 = "=RC[-1]"
.Value = .Value
End With
End Sub

Par avance merci
A+
 
Re : demande explication sur une macro proposée par le forum

Bonsoir


Que veux-tu savoir ?


Pour infos: la macro fut postée Lien supprimé

Voici une version qui devrait mieux te faire comprendre ce que fais la macro
Copie la macro ci-dessous dans un classeur vierge
puis lances la macro.
Code:
Sub a_plus()
Dim tt, ttt, b&, P_Ause
Dim r As Range
[COLOR=Green]'code de création des données de test[/COLOR]
tt = Split("ref/a/J/F/12/HG/45/LM/71", "/")
b = UBound(tt)
[E1].Resize(b + 1) = Application.Transpose(tt)
[F1].Resize(b + 1) = Application.Transpose(tt)
Range("G4,F3,F5,F7,F9").ClearContents
    With Columns("E:F")
        .HorizontalAlignment = xlCenter: .ColumnWidth = 4
        With .Font
        .Size = 12: .Bold = True
        End With
    End With
[COLOR=Green]'fin de création des données de test[/COLOR]
P_Ause = MsgBox("Remplir le vide?", vbYesNo, "Test")
If P_Ause = vbYes Then
Set r = [E1].CurrentRegion.Columns(2)
With r
.SpecialCells(4).FormulaR1C1 = "=RC[-1]"
.Value = .Value
End With
Else
End
End If
End Sub
 
Dernière édition:
Re : demande explication sur une macro proposée par le forum

Bonsoir STAPE 1600,

Je te remercie pour les explications que tu m'as donné.
Dans ce domaine, mon niveau est faible.
Et, j'avoue ne pas tout comprend.

Super sympa de ta part
A+
 
Re : demande explication sur une macro proposée par le forum

Re

Pour être complet

Voici la version orthodoxe
Code:
Sub a()
[COLOR=Green]'Déclarations[/COLOR]
Dim r As Range, c As Range
[COLOR=Green]'ici on définit la plage de cellules , cad la colonne F[/COLOR]
Set r =Range("E1").CurrentRegion.Columns(2)
[COLOR=Green]'ici on insère une formule dans les cellules vides[/COLOR]
[COLOR=Green]'la formule pour F1 par exemple : =E1  (qui s'écrit : "=RC[-1]")
' R pour Row C pour Columns, cad Colonne - 1[/COLOR]
With r 
    .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC[-1]"
[COLOR=Green]'ici on transforme les formules en valeurs[/COLOR]
    .Value = .Value
End With
End Sub
La version postée le 12/09/10 est juste une version utilisant des astuces d'écritures
 
Re : demande explication sur une macro proposée par le forum

Bonsoir Staple1600,

Je te remercie une fois de plus pour les explications données.
J'essaye de l'adapter à mon fichier existant et je n'arrive pas au résultat voulu.
C'est pourquoi, je me permets de remettre une partie du fichier à travailler.
Par avance merci
A+
 

Pièces jointes

Re : demande explication sur une macro proposée par le forum

Bonsoir


Voila ainsi modifié cela fonctionne


Code:
Sub a()
'Déclarations
Dim r As Range, c As Range
Set r = Range([L6], [L65536].End(xlUp)).Offset(, 1)
With r
    .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC[-1]"
'ici on transforme les formules en valeurs
    .Value = .Value
End With
End Sub
PS: il faut au préalable effacer tout ce qu'il y en dessous de la ligne 10 pour que la
macro fonctionne avec ton fichier joint.

EDITION: bonsoir Paritec
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
586
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…