Modification d'une cellule dans un code VBA, quand je déplace celle-ci ?

Bonjour à tous,

Je débute avec VBA, et j'ai un petit souci, suite à ma macro ci-dessous (c'est une remise à zéro de plusieurs cellule, sur action d'un bouton).

Ma question est: quand je déplace une cellule ou insérer une ligne, dans mon tableau, ça ne modifie pas automatiquement le code VBA (exemple la cellule B6 et je la déplaces en E8), mais je ne sais pas si c'est possible, j'ai beau chercher depuis 1 semaine et je ne trouve pas........... est-ce possible ?, sinon manuellement ça fonctionne 😂

Merci beaucoup d'avance de vos réponses

J'espère avoir été clair 😊

Excelement vôtre

Franck

Sub BaseDeDonnée()

'

' BaseDeDonnée Macro

'

'

Range("B2").Select

ActiveCell.FormulaR1C1 = "35"

Range("B3").Select

ActiveCell.FormulaR1C1 = "0"

Range("B4").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B5").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B6").Select

ActiveCell.FormulaR1C1 = "0"

Range("B7").Select

ActiveCell.FormulaR1C1 = "0"

Range("B8").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B9").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B10").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B11").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B12").Select

ActiveCell.FormulaR1C1 = "1.50%"

Range("B13").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B14").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B15").Select

ActiveCell.FormulaR1C1 = "0%"

Range("B1").Select

End Sub

Edit modo : code mis entre balises

Bonjour X et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum

La prochaine fois, merci de mettre votre code entre balises, avec le bouton

image

- Quelques fonctionnalites du forum à connaître

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- de citer une phrase (" ")
- ou de clôturer un fil lorsque vous avez terminé (V)

Merci pour votre participation

Cordialement

bonjour,

on peut donner une cellule ou une plage un nom (https://www.cours-gratuit.com/tutoriel-excel/tutoriel-excel-comment-crer-une-plage-nomme ) et si on insert une ligne alors cette plage nommée se déplace. En annexe j'ai nommée la cellule B2 "Ma_Cellule" et j'ai ajouté le couleur vert. Alors avec cette macro, on fait la même chose.

  1. avec la construction With ... End With, on utilise "Ma_Cellule" comme référence, c'est comme cette cellule est pour ce moment A1
  2. on donne plusieurs format aux cellules
  3. on colle les données en une fois
    4thor250.xlsb (21.99 Ko)
Sub BaseDeDonnée()

     arr = Array(35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.015, 0, 0, 0)     'une matrice avec les valeurs que vous voulez coller

     With Range("Ma_Cellule")     'nom de la plage nommée
          With .Resize(UBound(arr) + 1)     'préparer une plage avec le largeur égale à la matrice
               .NumberFormat = "0"     'toutes les cellules ce format
               .Range("A3:A4,A7:a14").NumberFormat = "0%"     'ces cellules (avec address relatif) ce format
               .Range("A11").NumberFormat = "0.00%"     'cette cellule ce format

               .Value = Application.Transpose(arr)     'coller la matrice (transposé)
          End With
     End With

End Sub

 

Bonjour Bsalv et merci beaucoup pour la réponse,

Mais ça ne répond pas à ma question, désolé.

Je pense que j'ai du mal m'exprimer !! je vais retenter une explication...

Bonjour à tous,

Ma macro ci dessous me permet de remettre à l'état d'origine le tableau ci-dessous avec le bouton RAZ, mon souci est que supposons que je veuille insérer une ligne ou que je déplace la cellule B12 en G13, et bien ça ne modifie pas le code VBA, je suis obligé de soit refaire la macro ou de modifier le code manuellement, exemple à la place de B12 je dois mettre G13.

J'aimerais si c'est possible que cela se fasse automatiquement, est-ce possible ?

Mille merci d'avance, bon WE

Cordialement

PS: autre exemple, quand dans un tableur nous faisons une formule avec plusieurs cellule, si on en déplace une, automatiquement Excel modifie la cellule dans la formule, mais dans VBA ça ne le fait pas !!

image
Sub BaseDeDonnée()
'
' BaseDeDonnée Macro
'

'
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "35"
    Range("B3").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("B4").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B5").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B6").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("B7").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("B8").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B9").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B10").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B11").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B12").Select
    ActiveCell.FormulaR1C1 = "1.50%"
    Range("B13").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B14").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B15").Select
    ActiveCell.FormulaR1C1 = "0%"
    Range("B1").Select
End Sub

Bonjour Thor 250,

Cela peut se faire de différentes façons.

Mais d'abord pour qu'elle raison déplacer une ou plusieurs cellule?

Et la colonne à gauche portant l'intitulé de cette ou ces cellules est-elle déplacer ou non ?

Bonjour X Cellus,

La raison est que je suis entrain de faire une matrice de feuille de paye, car je suis en formation de gestionnaire de paye, et bien sur cette matrice n'est pas figé car elle évolue au cour de la formation, de ce fait, j'ai déjà inséré des lignes, en fait c'est surtout des insertions de ligne et tout ce qui est dessous cette ligne, ne se modifie pas dans le code VBA, (comme ça peux le faire dans les formules Excel), là j'ai mis un code simple mais j'en ai des plus long, j'en rajoute un ci-dessous.

Quand je remplis un bulletin de salaire je rentre plein d'information et pour éviter de remettre à l'origine cellule par cellule, j'ai créé cette Macro (gain de temps énorme 😉)

En fait tu as raison, comme ce n'est que des insertions de ligne, tout ce qui est à gauche, suit, donc pas de souci par rapport à ça.

Maintenant un exemple par rapport au code ci-dessous, imaginons que j'insère une ligne en 60 et bien toute mes cellules qui sont en dessous G66, G67 etc... ne se modifie pas dans VBA

J'espère avoir été clair

Merci d'avance

Bien à toi

Franck

Edit modo : du code à rallonge empêche la bonne lisibilité du forum , je l'ai donc supprimé
il suffit de déposer votre fichier à la place

A nouveau,

Voici un premier exemple pour ton RAZ de cellules. Basé sur ton premier post.

Sub RAZ()
'Zone exemple couverte A1 à AD200, à adapter au besoin.
For Col = 1 To 30
For Lig = 1 To 200
Select Case Cells(Lig, Col)
'Actuellement basée sur 3 codes (HSM, CEC et RAZ)
Case "HSM"
'Heures semaines
Cells(Lig, Col).Offset(0, 1) = 35
Case "CEC"
'Complémentaire employée cadre
Cells(Lig, Col).Offset(0, 1) = 0.015
'Toutes cellules ayant une remise à 0, quelque soit son format
Case "RAZ"
Cells(Lig, Col).Offset(0, 1) = vbNull - 1
End Select
Next Lig, Col
End Sub

Mais le principe est le même si tu ajoutes d'autres formats. A condition que tu associes un code (ici alphabétique) avec ton format.

C'est d'ailleurs le fonctionnement des logiciels de paye, le plus souvent par ,soit un code numérique ou soit alphanumérique.

Ce qui permet ensuite de pouvoir passer en comptabilité sur les bons comptes tout le bulletin de paie.

Et surtout de créer autant de fiches de paie mensuelles désirées sur une feuille.

Voir fichier ci-dessous et notes en rouge au bas de la feuille.

9matricethor.xlsm (17.75 Ko)

Alors là, BRAVO X Cellus, je suis sur le cul, ça fonctionne , mais franchement je ne voyais pas ça aussi compliqué, merci infiniment

PS: j'aurais pu chercher longtemps....................

Suite,

Merci bien, mais si tu le souhaites tu peux aussi ajouter au vu de ton dernier fichier le format "".

Et en faisant suivre tes intitulés.

Exemples :

Code HSM Format 35

Code CEC Format 0.015

Code VID Format ""

Code MEN Format "Mensualisé"

etc...

Rechercher des sujets similaires à "modification code vba quand deplace celle"