Utiliser des plages numériques non contigues

  • Initiateur de la discussion Initiateur de la discussion ninie95
  • Date de début Date de début

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 !

N

ninie95

Guest
Bonjour à tous,

j'utilise les macros depuis quelques mois et me voila confrontée un un cas assé complexe.😀


J'ai un tableau (ci joint) dans le quel je retrouve des données en caractère et numérique.
je souhaiterais faire +4% à toutes les cases qui sont en numériques, sachant que ces données peuvent se trouver dans toute la feuille et qu'elles ne sont pas contigues.
J'espère avoir été claire dans ma demande et que quelqu'un pourra m'aider car mon boss commence à me courrir sur le caillou😱
 

Pièces jointes

Re : Utiliser des plages numériques non contigues

bonjour,

voix si cela convient, sinon, fourni un exemple plus parlant
Code:
Sub AjouterQuatrePourcent()
    Dim plg As Range
    Err.Clear
    On Error Resume Next    ' si aucune cellule correspondante -> erreur
    Set plg = Feuil1.UsedRange.SpecialCells(xlCellTypeConstants, xlNumbers)
    If Err <> 0 Then Exit Sub
    Dim c As Range
    For Each c In plg.Cells
        c = c + (c * 0.04)
    Next c
End Sub

A+
 
Re : Utiliser des plages numériques non contigues

Bonjour ninie95, Hasco,
Comme j'ai fait quelque chose je le poste:
Code:
[COLOR=blue]Sub[/COLOR] Ajout()
[COLOR=blue]For Each[/COLOR] c [COLOR=blue]In[/COLOR] Sheets("Feuil1").UsedRange
    [COLOR=blue]If[/COLOR] c.Value <> "" [COLOR=blue]And[/COLOR] IsNumeric(c) [COLOR=blue]Then[/COLOR] c.Value = c.Value + c.Value / 100 * 2
[COLOR=blue]Next[/COLOR] c
[COLOR=blue]End Sub[/COLOR]
Par contre le fichier exemple ressemble à un TCD "écrasé". Si il s'agit bien de cela, un champs calculé devrait faire l'affaire.
Cordialement
 
Re : Utiliser des plages numériques non contigues

Salut Efgé, ça marche pas, je suis sur ma cellule A1 qui est du caractère et il tourne en rond en ne faisant rien snif!!!

Pour info ce n'est pas un TCD, l'extrait que j'ai fait n'est qu'un exemple fabriqué de mes tableaux
 
Dernière modification par un modérateur:
Re : Utiliser des plages numériques non contigues

Comme demandé ci joint le fichier dans le quel il faut rajouter 4%. Hasco ta marcro fonctionne correctement sauf qu'elle ne s'arrete plus, elle tourne en rond.
Efgé, ta macro a l'air ok mais elle ne démarre pas, comme si il ne trouvait rien à augmenter.
 
Re : Utiliser des plages numériques non contigues

Re...
Merci roger mais comment ça marche? je ne voie pas de macro derière tout ça... ça peux m'interesser.
Il y a une procédure évènementielle dans le module de la feuille Feuil2 :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Activate()
Dim i&, j&, tmp
   Application.ScreenUpdating = False
   Cells.Clear
   With Sheets("Feuil1")
      .Range(.Cells(1, 1), .Cells(1, 1).SpecialCells(xlCellTypeLastCell)).Copy Destination:=Range("A1")
      tmp = .Range(.Cells(1, 1), .Cells(1, 1).SpecialCells(xlCellTypeLastCell)).Value
   End With
   On Error Resume Next
   For i = 1 To UBound(tmp, 1)
      For j = 1 To UBound(tmp, 2)
         If Not IsEmpty(tmp(i, j)) Then tmp(i, j) = 1.04 * tmp(i, j)
      Next j
   Next i
   On Error GoTo 0
   Me.Cells(1, 1).Resize(UBound(tmp, 1), UBound(tmp, 2)).Value = tmp
   Application.ScreenUpdating = True
End Sub[/B][/COLOR]
ROGER2327
#3933


Samedi 7 Tatane 137 (Saint Biribi, taulier, SQ)
2 Thermidor An CCXVIII
2010-W29-2T09:58:20Z
 
Re : Utiliser des plages numériques non contigues

Merci beaucoup roger.

Je peux enregistrer cette macro dans mes données personelles? plustot que rattachée sur la feuille 2?
Est il possible de lui demander le taux à réhausser par une invite en début de macro?

je sais que j'en demande beaucoup mais j'aime la perfection et je vois qu'il y a de monde qui partage ce gout des choses bien faites.
 
Re : Utiliser des plages numériques non contigues

Re Le fil,

Ninie, chez moi elle ne tourne pas en rond. Tu as peut-être des macros évènementielles dans ton fichier original ou des formules qui entrainent de long calculs?

La re-voilà modifiée en conséquence:
Code:
Sub AjouterQuatrePourcent()
    Dim modeCalcul As XlCalculation
    Dim plg As Range
    Err.Clear
    On Error Resume Next    ' si aucune cellule correspondante -> erreur
    
    'Ne travailler que sur les cellules contenants des constantes numériques
    Set plg = Feuil1.UsedRange.SpecialCells(xlCellTypeConstants, xlNumbers)
    
    'Si aucune occurence trouvée -> sortit
    If Err <> 0 Then Exit Sub
    
    On Error GoTo FIN
    modeCalcul = Application.Calculation ' Retenir le mode de calcul du départ
    Application.Calculation = xlCalculationManual ' Mettre le mode de clacul en manuel
    Application.EnableEvents = False ' déactiver la gestion des évènements
    
    Dim c As Range
    'Parcourir les cellules de la plage
    For Each c In plg.Cells
        c = c * 1.04
    Next c
    
Fin:
    Application.Calculation = modeCalcul 'remettre le mode de calcul à sa valeur initiale
    Application.EnableEvents = False ' réactiver la gestion des évènements
End Sub


A+
 
Re : Utiliser des plages numériques non contigues

Re Hasco,

Merci mais j'ai toujours le même problème, lorsque j'atteins le dernier chiffre il remonte sur la ligne de mon premier chiffre et sa tourne en rond.
C'est bête car pourtant c'est exactement ce qu'il me faut
Help!!!!
 
Dernière modification par un modérateur:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour