Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Décaler des cellules si cellule contient valeur numérique

  • Initiateur de la discussion Initiateur de la discussion lolo62000
  • 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 !

L

lolo62000

Guest
Bonjour,

dans le fichier ci-joint, j'ai du texte et des valeurs numériques en colonne C.
Je cherche à décaler par macro toutes les cellules en colonne C vers la colonne H si le contenu de la cellule est numérique.
Et là je suis dans l'impasse.
Autre problème, les valeurs numériques en colonne C et H sont parfois précédées de tirets, ou suivies de tirets. (Ex: ___49.95). Existe t-il une formule pour pouvoir ne garder que les chiffres, et supprimer tous les tirets.
Merci pour votre aide.

Laurent.
 

Pièces jointes

Re : Décaler des cellules si cellule contient valeur numérique

Bonjour lolo62000, Bonjour le Forum,

Un solution à essayer
Code:
For i = 1 To Range("C1", Range("C65535").End(xlUp)).Rows.Count
    Range("c" & i) = Replace(Range("c" & i), "-", "")
    If IsNumeric(Range("c" & i)) Then Range("H" & i - 1) = Range("c" & i)
Next

A+ JAck2
 
Re : Décaler des cellules si cellule contient valeur numérique

Bonjour lolo

A tester:

Code:
Sub adapt()
For n = 2 To Range("C" & Rows.Count).End(xlUp).Row
 Range("C" & n) = Replace(Replace(Range("C" & n), "-", ""), "_", "")
 If IsNumeric(Range("C" & n)) Then
   Range("H" & n) = CDbl(Range("C" & n))
   Range("C" & n) = 0
 End If
Next
For n = 2 To Range("H" & Rows.Count).End(xlUp).Row
  Range("H" & n) = CDbl(Replace(Replace(Replace(Range("H" & n), "-", ""), "_", ""), ".", ","))
Next
End Sub
 
Re : Décaler des cellules si cellule contient valeur numérique

Rebonjour.

PierreJean, j'ai adapté ton code à mon fichier, et c'est à deux doigts de marcher. =)
Tout d'abord, j'ai supprimé la 2e partie du code car vba me renvoyait une erreur:

Sub adapt()
For n = 2 To Range("C" & Rows.Count).End(xlUp).Row
Range("C" & n) = Replace(Replace(Range("C" & n), "-", ""), "_", "")
If IsNumeric(Range("C" & n)) Then
Range("H" & n) = CDbl(Range("C" & n))
Range("C" & n) = 0
End If
Next
For n = 2 To Range("H" & Rows.Count).End(xlUp).Row
Range("H" & n) = CDbl(Replace(Replace(Replace(Range("H" & n), "-", ""), "_", ""), ".", ","))
Next
End Sub.

Mais ce n'est pas grave, car avec le début du code, j'obtiens le résultat souhaité. Et comme je ne déchiffre pas tout du langage vba, je t'avouerais que je ne comprend pas l'incidence de l'enlever ou pas.

Mon autre problème, plus embêtant, c'est que je dois en fait répéter l'opération pour les colonnes D,E,F,G.
Or, j'execute l'opération pour la colonne C en premier, et ensuite, lorsque je fais de même pour le colonne D, tous les chiffres de "C" copiés en H disparaissent si aucune valeur n'existe en "D".
Exemple:
1) "C11" est copié en H11
2) "D11" étant vide, il va remplacer ensuite la valeur 97.95 par 0.

Donc je pense qu'il faudrait spécifier de déplacer les cellules "numériques", et "non vides"(si possible).

Précision sur tout ce méli-mélo: Je dois remettre en forme un tableau issu d'un pdf, dont toutes les colonnes ont été décalées après copié/collé dans Excel. =(

Merci pour votre aide, j'apprécie grandement.
Laurent.
 

Pièces jointes

Re : Décaler des cellules si cellule contient valeur numérique

C'est excellent pierrejean,
tout est correct maintenant.
Merci grandement pour ton aide! =)
Bonne journée.
Laurent.
 
- 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.

Discussions similaires

Réponses
11
Affichages
931
Réponses
7
Affichages
830
Réponses
3
Affichages
879
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…