Macro perd la référence des cellules

Bonjour tout le monde,

je viens de découvrir ce forum et ça m'a l'air très riche et très sympa.

J'ai besoin d'un coup de pouce s v p,

j'ai fait une petite macro pour m'éviter de calculer a chaque fois les données que je rentre et modifie dans un tableau (c'est une petite fiche de calcul d'un jeu)

c'est du calcul tres simple, et a chaque partie les données changent et ma macro me permet d'enregistrer sur une feuille excel, les scores et d'autres donnés.

ça fonctionne tres bien sauf que j'ai voulu apporter quelques modif esthetiques et le probleme c'est que si j'insere ou supprime une cellule ( vide par exemple),

la macro perd certaines references et ça ne calcul plus.

j'aimerai savoir si il est possible que les cellules dont je fais reference puissent tenir compte des modif et gardent leur calcul.

voici un exemple

Range ("C12").select ==>je vais voir si j'ai un bonus en c12

if activecell.value = " Bonus" then

range("D12").end(xldown).offsset(1,-2).select ==>si oui je descend a la fin d une autre colonne (D) et decale pour ecrire bonus

Activecell.value = " Bonus"

Mais admettons que je modifie la fameuse colonne C, en virant la C5 par exemple

alors ca va plus car mon range ("C12") ne correspond evidement pas a la cellule dedié au bonus

Pardon d'etre un peu lourdingue, j'espère que vous avez compris et avez la solution.

faut il que je nomme la cellule C12 , mais apres je ne sais pas comment utiliser le range avec un nom ??

merci d'avance

Salut,

Je pense qu'il y a 36 possibilités de résoudre ton problème, mais sans avoir ton fichier à disposition, ce n'est pas évident. Par exemple je chercherais si un texte bien précis se déplace avec ta cellule C12 et je ferais référence à la colonne ou à la ligne de ce texte afin de savoir où se situe maintenant ta cellule à bonus.

Si cette idée n'est pas bonne, on pourrait tenter l'idée numéro 2.

Si l'idée numéro 2 n'est pas bonne, on pourrait tenter l'idée numéro 3.

Etc. jusqu'à résoudre ton problème

Cordialement.

Bonsoir, merci de cette reponse rapide,

je recupere le fichier et te l'envoie

hello voici le fichier et j'ai ajouté un texte d'explication

merci

18yams.xlsm (51.55 Ko)

Tout d'abord, je ne comprends pas pourquoi tu dis que la cellule C12 est décalée vers le bas lorsque tu introduits des cellules dans les colonnes V à X. Si tu sélectionnes des cellules de ces 3 colonnes, que tu cliques à droite et que tu choisis 'Décaler les cellules vers le bas", ça n'impacte pas les autres colonnes et ta cellule C12 reste en place.

image

Mais si tu dois vraiment modifier l'emplacement de ta cellule Bonus (C12 au départ), tu pourrais par exemple rechercher à quelle ligne elle se trouve maintenant avec une macro de ce genre :

Sub Chercher_bonus()
    Dim Ligne_Bonus

    Ligne_Bonus = WorksheetFunction.Match("Bonus", Range("A:A"), 0)

    MsgBox "Le bonus est de " & Range("C" & Ligne_Bonus)

End Sub

Je t'en fait la démonstration dans le fichier ci-joint.

Bonne soirée.

8yams.xlsm (50.55 Ko)

Bonjour,

merci, en effet je me suis trompé en parlant de la c12, non c’était en fait comme je l'explique dans mon fichier le pavé ou il y a le cumul des parties gagnées, les bonus, les yams etc, donc ici en voulant insérer des cellules vierge pour créer un espace que les cellules d dessous sont impactés.

je vais regarder ce que tu as envoyé

voici en fait mon souhait pour d'autres projets par ex.

imaginons qu'en A1 ET A2 ce soit des cellules dans lesquelles on va entrer des valeurs 10 en A1 et 5 en A2

ensuite en A3 on dit = A1+A2 on obtient l'addition

maintenant j’insère une cellule entre A1 et A2

ma formule se retrouve en A4 et L4addition fonctionne toujours

Donc comment faire en vba pour le même exemple.

Salut,

Par macro, ta deuxième demande est selon moi impossible. Afin de pouvoir retrouver où a été déplacée ta cellule A3, il faut pouvoir effectuer une recherche sur la base de quelque chose. Dans l'exemple que je t'ai fourni, j'effectue une recherche sur la base du mot "Bonus" afin de savoir où a été déplacée ta cellule A12.

Il vaudrait mieux rester sur ton premier exemple et chercher une solution par rapport à ton souci réel. Alors, lorsque tu dis qu'il s'agit du "pavé où le cumul des parties gagnées ......", de quelle plage précise s'agit-il ? Et sur la base de cette information, dans quelle plage souhaites-tu insérer des cellules vierges ?

Je suis certain qu'il y a une solution à ton problème. Il faut juste l'expliquer clairement.

A te relire.

Bonjour,

pour t'affranchir des déplacements de cellules tu peux aussi les nommer.

Par exemple nomme C12 : Bonus
Ensuite en vba tu peux faire Range("Bonus") = 35 ou même Range("Bonus") = Range("Bonus").offset(,-1).value si la valeur est toujours à sa gauche
Tu peux emmener C12 en AC53, vba la trouvera toujours.
En plus ça auto-documente le code qui devient plus compréhensible sans commentaire
eric

Bonjour, et merci

Yvouille le pavé c'est le petit tableau ou il y a le nom des joueurs, sccore parties gagnees etc...

Eriiic en efet je voulais nommée mais je ne savait pas comment utilmiser les noms avec range, je crois que c'est la solution.

j'essaye et vous dit

Bonjour tout le monde,

merci, c était bien ce que je voulais faire il fallait que je nomme les cellules, donc impec je peux désormais modifier si besoin ma fiche de comptage des points sans bloquer ma macro.

je ne sais pas si il faut créer un autre sujet, car j'ai encore une question :

Je ne sais pas obtenirle Maxi ou mini d'une plage de valeurs de cellules allant de (par exemple, D32 jusqu’à la dernière cellule non vide.

j'ai essayé avec max=range("d32").End(xldown).select, un truc de ce genre, mais pas bon;

merci pour un coup de pouce

Bonjour,

pour la clarté du forum et les futurs lecteurs c'est mieux de créer un nouveau sujet avec un titre explicite.
Au vu de ce que tu as écris je ne peux que te conseiller de lire le 'Cours VBA' dans le menu en haut de cette page.
Ca ne sera pas du temps perdu
Il y a des des bases minimum à acquérir. Voir un .Select pour une affectation de variable ça fait peur
eric

Bonsoir, ok, merci je vais regarder ça

Rechercher des sujets similaires à "macro perd reference"