XL 2010 Appliquer une macro au nouvelles lignes d'un tableau qui seraient ajoutées....

fabdric

XLDnaute Nouveau
Bonjour,

J'ai crée une macro dans un tableau excel afin de remplacer dans 4 colonnes du tableau les cases vides par un chiffre. J'ai associé cette macro à un bouton.
Mais quand j'ajoute des lignes en bas de mon tableau et que je réactive le bouton, la macro ne s'applique pas aux lignes ajoutées... Est-ce possible que la macro s’étende automatiquement aux nouvelles lignes ajoutées?

J’espère avoir été claire.

Merci de votre aide.

Fab
 
Solution
C'est parce qu'il nh'existe pas de colonne "VŒU COLLECTIF n°1 COMBIEN DE COLLÈGUES SONT CONCERNÉS ?"
Il existe par contre une colonne avec presque la même chose mais beaucoup plus d'espaces entre "n°1" et "COMBIEN"
Mais d'ailleurs ce n'est pas une colonne qu'il faut spécifier, c'est tout le tableau :
VB:
Sub Remplacer_2()
   Dim Rng As Range
   Set Rng = Range("Tableau1")
   Set Rng = Intersect(Rng.Worksheet.[AC:AC,AS:AS,BK:BK,CC:CC], Rng)
   Rng.Replace What:="", Replacement:="1", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
   End Sub

fabdric

XLDnaute Nouveau
Merci pour cette réponse rapide.

Oui j'utilise bien la fonctionnalité tableau.
Mais je ne veux pas compter le nombre de lignes mais que ma macro s'applique aux nouvelles lignes insérées.

Ou alors j'ai pas compris ce qui est fort probable...
 

Iznogood1

XLDnaute Impliqué
Remplace le code qui affiche pas un message par ton propre traitement.
Exemple


VB:
Sub Macro1()
  Dim r As Range
  For Each r In Feuil1.ListObjects("MonTableau").DataBodyRange.Rows
    If IsEmpty(r.Range("A1")) Then
      MsgBox r.Address & " est une nouvelle ligne"
    End If
  Next r
End Sub
 

Pièces jointes

  • Demo.xlsm
    15.4 KB · Affichages: 4

fabdric

XLDnaute Nouveau
Bonjour,

Merci pour la réponse.

Je ne suis pas très doué avec VBA je ne sais pour le moment que faire en enregistrant une macro.
Du coup je ne sais pas trop ou rajouter le bout de code sachant que pour ma première colonne de tableau ça me met bien le nom de référence mais pas pour les autres... J'ai essayé de changer les plages des autres par les noms de référence mais ça ne fonctionne pas. Et même pour la première colonne ou il y a bien la référence, si j'ajoute une ligne et que je réactive la macro ça ne rempli pas la nouvelle ligne...


Voici la macro que ça me met.

Sub Remplacer_2()
'
' Remplacer_2 Macro
'

'
ActiveWindow.ScrollColumn = 39
ActiveWindow.ScrollColumn = 38
ActiveWindow.ScrollColumn = 37
ActiveWindow.ScrollColumn = 36
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 34
ActiveWindow.ScrollColumn = 33
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 29
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 25
Range("Tableau1[VŒU COLLECTIF n°1 COMBIEN DE COLLÈGUES SONT CONCERNÉS ?]"). _
Select
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 29
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 33
ActiveWindow.ScrollColumn = 34
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 36
Range("AC3:AC6,AS3:AS6").Select
Range("AS3").Activate
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 36
ActiveWindow.ScrollColumn = 37
ActiveWindow.ScrollColumn = 38
ActiveWindow.ScrollColumn = 39
ActiveWindow.ScrollColumn = 40
ActiveWindow.ScrollColumn = 41
ActiveWindow.ScrollColumn = 42
ActiveWindow.ScrollColumn = 43
ActiveWindow.ScrollColumn = 44
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 46
ActiveWindow.ScrollColumn = 47
ActiveWindow.ScrollColumn = 48
ActiveWindow.ScrollColumn = 49
ActiveWindow.ScrollColumn = 50
ActiveWindow.ScrollColumn = 51
ActiveWindow.ScrollColumn = 52
ActiveWindow.ScrollColumn = 53
Range("AC3:AC6,AS3:AS6,BK3:BK6").Select
Range("BK3").Activate
ActiveWindow.ScrollColumn = 52
ActiveWindow.ScrollColumn = 53
ActiveWindow.ScrollColumn = 54
ActiveWindow.ScrollColumn = 55
ActiveWindow.ScrollColumn = 56
ActiveWindow.ScrollColumn = 57
ActiveWindow.ScrollColumn = 58
ActiveWindow.ScrollColumn = 59
ActiveWindow.ScrollColumn = 60
ActiveWindow.ScrollColumn = 61
ActiveWindow.ScrollColumn = 62
ActiveWindow.ScrollColumn = 63
ActiveWindow.ScrollColumn = 64
ActiveWindow.ScrollColumn = 65
ActiveWindow.ScrollColumn = 66
ActiveWindow.ScrollColumn = 67
ActiveWindow.ScrollColumn = 68
ActiveWindow.ScrollColumn = 69
Range("AC3:AC6,AS3:AS6,BK3:BK6,CC3:CC6").Select
Range("CC3").Activate
Selection.Replace What:="", Replacement:="1", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez comme ça :
VB:
Sub Remplacer_2()
   Dim Rng As Range
   Set Rng = Range("Tableau1[VŒU COLLECTIF n°1 COMBIEN DE COLLÈGUES SONT CONCERNÉS ?]")
   Set Rng = Intersect(Rng.Worksheet.[AC:AC,AS:AS,BK:BK,CC:CC], Rng)
   Rng.Replace What:="", Replacement:="1", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
   End Sub
À tester (je l'aurais fait si vous aviez joint le classeur)
 

fabdric

XLDnaute Nouveau
Merci pour votre retour,

J'ai essayé le code mais cela ne fonctionne pas.
Oui désolé je n'ai même pas pensé à vous mettre le fichier.
Le voici.

Je veux qu'il y ai des 1 qui se mettent dans les cases vides des colonnes AC; AS; BK et CC du tableau.
 

Pièces jointes

  • results-edusondage.xlsm
    55.3 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
C'est parce qu'il nh'existe pas de colonne "VŒU COLLECTIF n°1 COMBIEN DE COLLÈGUES SONT CONCERNÉS ?"
Il existe par contre une colonne avec presque la même chose mais beaucoup plus d'espaces entre "n°1" et "COMBIEN"
Mais d'ailleurs ce n'est pas une colonne qu'il faut spécifier, c'est tout le tableau :
VB:
Sub Remplacer_2()
   Dim Rng As Range
   Set Rng = Range("Tableau1")
   Set Rng = Intersect(Rng.Worksheet.[AC:AC,AS:AS,BK:BK,CC:CC], Rng)
   Rng.Replace What:="", Replacement:="1", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
   End Sub
 
Dernière édition:

fabdric

XLDnaute Nouveau
Super,

Merci beaucoup ça fonctionne bien. Je n'ai pas tout compris pour le fait qu'il faille spécifier le tableau et non la colonne mais c'est pas grave ça fonctionne.

Merci beaucoup en tout cas pour la solution et la réactivité.
Je met le sujet en résolu.

Bonne soirée.
 

Discussions similaires