XL 2016 Modifier une cellule précise avec macro

Sacha1980

XLDnaute Nouveau
Hellos tout le monde,

Je viens vers vous pour tenter de solutionner un souci que je ne sais pas comment résoudre car je suis un super débutant en VBA.

En fouinant un peu sur le forum pour trouver ce que je recherchais, je suis tombé sur ce lien avec le fichier de :
Papou-net

C'est pile-poil ce que je recherche. Bien entendu, j'ai modifié le code car certains éléments ne m'intéressais pas !

Par contre, en rapport avec ce que je veux réellement, soit modifier une cellule précise, je ne sais pas si le code est correct ou non car celui-ci à l'origine était fait pour une plage de cellule allant de A1 à C6 ?? Tout ce que je sais, c'est que cela fonctionne avec ma modification.

Cependant, j'aimerais beaucoup, que je ne sois pas dans l'obligation de devoir me trouver sur la cellule que j'aurais désignée sur mon fichier où le code sera placer car il sera très loin et cacher dans la feuille puisque je vais me servir de cette cellule en la copiant et en la collant sous forme d'image liée avec d'autres cellules qui eux ne seront pas modifiables !

Le but étant de mettre une série de cellules en image et pouvoir coller cette image sur un endroit toujours visible sur ma feuille grâce au figer du début de mon tableau et comme vous le savez, on ne peut pas mettre plusieurs cellules dans une même cellule lol d'où l'intérêt de cette image qui comportera les données et qui se modifiera sur l'image en même temps que les données des cellules normales.

Donc pour les connaisseurs que vous êtes en VBA est-ce que d'abord le code est correct ?
Et de l'autre est-ce possible de faire en sorte que je ne sois pas dans l'obligation de me positionner sur la cellule en question en cliquant sur le bouton qui ouvre l'userForm fin la boîte de dialogue ?

il est à savoir, c'est volontaire le fait d'avoir placé un bout de code qui sélectionne la cellule Z5 sur le fichier ci-joint car sinon parfois j'ai une alerte de débogage si je ne suis pas sur la cellule, je n'ai pas encore trop bien compris pourquoi j'ai cette alerte quand je ne suis pas sur la cellule Z5 en voulant modifier via le bouton de modification, mais bon, c'est parfois, mais il serait bien que cela ne le fasse plus sinon je ne pourrais pas déployer mon fichier avec un souci ainsi qui arrive parfois !

Merci à vous pour votre aide, je vous laisse le fichier de test c'est plus explicite je pense lol

Sacha.
 

Pièces jointes

  • Test.xlsm
    25.6 KB · Affichages: 15

Sacha1980

XLDnaute Nouveau
VB:
Activesheet.Cells(ActiveCell.Row, "C").Resize(, 14).ClearContents
VB:
ActiveSheet.[C:P].Rows(ActiveCell.Row).CleaContents
Merci.

En modifiant la ligne par ton code, j'ai une alerte de débogage.

Cela indique : Erreur d'exécution '404': Objet requis

Et j'ai cette ligne en surligner jaune

VB:
If ActivateCell.Value <> "" Then

Le code est ainsi :

Code:
Sub EffacePlageFrifri()

Dim ligne As Integer

For ligne = 3 To 10000

If ActivateCell.Value <> "" Then

Intersect(ActiveSheet.[C:P], ActivateCell.EntireRow).ClearContents

Exit Sub

End If

Next ligne

End Sub

Tu sais me dire pourquoi et ce que je dois faire Stp ? Merci.
 

Dranreb

XLDnaute Barbatruc
Mettez des espions en débogage pour voir quelles expressions ne sont pas définies.
ActivateCell ça n'existe pas. C'est ActiveCell qui représente la cellule active de la plage sélectionnée.
Édition: Ah oui, je l'avais mal tapé au poste #15. Désolé.
Ou alors j'avais repompé sans vérifier des parties de votre poste #12
 
Dernière édition:

Sacha1980

XLDnaute Nouveau
Mettez des espions en débogage pour voir quelles expressions ne sont pas définies.
ActivateCell ça n'existe pas. C'est ActiveCell qui représente la cellule active de la plage sélectionnée.
Édition: Ah oui, je l'avais mal tapé au poste #15. Désolé.
Oui, effectivement, tu avais fait une petite erreur, mais rassure-toi lol j'avais fait la même chose sur une autre partie de ce code à la partie if mdrr.

Voilà cela fonctionne, je vais pouvoir supprimer les 50 macros qui ne servent maintenant plus à rien lol

Et pour la partie ajout d'une ligne dans le tableau Que je t'avais demandé sur le poste 12

Aussi, j'ai vu une fonction sur ton tableau qui permet d'ajouter une nouvelle ligne au tableau et que cette fonction copie le contenu de la cellule couleur.

Est-ce possible que tu me fasses cette même fonction et qui copie la cellule D7 qui dans cette colonne ce sont des noms d'objets de collection et la cellule C7 qui dans cette colonne sont des images ?

Merci.
 

Dranreb

XLDnaute Barbatruc
Le module dédié à ces opérations dans le CouleurCls.xlsm c'est le MInsSuppr.
Remarque: lorsqu'une plage a fait l'objet d'une mise sous forme de tableau, la reconduction des formules communes à toutes les ligne est automatique lors de l'insertion d'une nouvelle.
 

Sacha1980

XLDnaute Nouveau
Le module dédié à ces opérations dans le CouleurCls.xlsm c'est le MInsSuppr.
Remarque: lorsqu'une plage a fait l'objet d'une mise sous forme de tableau, la reconduction des formules communes à toutes les ligne est automatique lors de l'insertion d'une nouvelle.
C'est bon à savoir cela.

Dans le cas présent, dans ce tableau qui sert avec le moteur de recherche, ce tableau n'a aucune formule car le moteur de recherche est en VBA et c'est une recherche instantanée voir sur mon sujet
Recherche instantanée multicritère.

Dans ton code, il recopie donc l'image correspondant à la ligne que je rajoute dans le tableau ?

Et est-ce qu'il y a d'autres parties de code que je dois mettre dans la feuille ou est le code du moteur de recherche ?

Je réponds demain fin lol il est passé minuit, donc tout à l'heure après mon boulot vers les 17h30 car là il est tard et je me lève à 06h30.

Bonne nuit et merci de ton aide, et à demain.
 

Dranreb

XLDnaute Barbatruc
Bonjour
Pour les recherches instantanées à critères multiples, je ne propose que des solutions par UserForm avec des ComboBox pour les critères de recherche et un outil pour les prendre en charge automatiquement.
Cet outil ne prévoit pas d'image dans le tableau même, mais il peut prendre en charge à la place un nom de fichier image d'un dossier. Il permet alors l'affichage de l'image mais seulement dans l'UserForm.
Il n'y a pas de copie de ligne dans le module MInsSuppr de CouleurCls.xlsm.
Pour les images de commandes d'ajout et suppression de ligne, sa Sub PositImage est aussi exécutée par la Sub ÉtudeSélection de MÉtudes, elle même exécutée quand on sélectionne une cellule d'une feuille d'étude.
 

Sacha1980

XLDnaute Nouveau
Ben sur les feuilles d'études. Il est vrai qu'ils ne sont visibles que si une cellule de tableau est sélectionnée
Re,

Je ne sais pas, fin pas grave, ce n'est pas vraiment un outil indispensable le bouton ajouter une ligne au tableau !

Par contre histoire de revenir au sujet initial lol, un léger souci que je m'efforce de comprendre ????

Dans le code pour effacer une plage de cellule, pourquoi je suis obligé de me trouver sur une cellule contenant quelque chose pour qu'il excute la fonction effacé et donc efface l'ensemble des cellules pleines et si je me trouve sur une cellule vide il n'agit pas ????? Car cela dépend de la liste et toutes les cellules de la ligne concernée au pseudo ne sont pas forcément remplies certaines peuvent rester vide.

Il n'y a pas moyen de le faire exécuter même si je trouve sur une cellule vide ?

Merci.

Sacha.

VB:
Sub EffacePlageFrifri()
Dim ligne As Integer
For ligne = 3 To 10000
If ActiveCell.Value <> "" Then
Intersect(ActiveSheet.[C:P], ActiveCell.EntireRow).ClearContents
Exit Sub
End If
Next ligne
End Sub
 

Dranreb

XLDnaute Barbatruc
Ah ça je ne sais pas, c'est vous qui l'avez écrit comme ça. Comment voulez vous que je sache pourquoi ?
Notez que ça va être long de le faire ligne par ligne.
Pourquoi ne faites vous pas tout simplement
VB:
ActiveSheet.[C3:P10000].ClearContents
?
Non, c'était pire que ça: vous faisiez 9998 fois la même chose toujours sur la ligne de la cellule active de la plage sélectionnée !
 
Dernière édition:

Sacha1980

XLDnaute Nouveau
Ah ça je ne sais pas, c'est vous qui l'avez écrit comme ça. Comment voulez vous que je sache pourquoi ?
Notez que ça va être long de le faire ligne par ligne.
Pourquoi ne faites vous pas tout simplement
VB:
ActiveSheet.[C3:P10000].ClearContents
?
Il n'est pas fonctionnel ton code lol.

Non, c'est un code que j'ai recopié via un tuto sur une vidéo formation sur Youtube, mais bon, le truc c'est de pouvoir effacer le contenu des cellules même si je me trouve sur une des cellules vides !

Exemple ci C3 à C8 contient quelque chose si je me trouve sur C9 qui lui est vide et bien la fonction effacer ne fonctionne pas, il faut que je sois sur une cellule qui ne soit pas vide de la ligne !!

Et moi j'aimerais pouvoir aussi même si je me trouve sur une cellule vide.