Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
j'ai un tableau de 25 colonnes et 100000 lignes
je voudrais insérer une nouvelle colonne et copier des données en modifiant certaines
il y a probablement mieux et moins long que ce que je fais
merci pour les avis
Bonjour le fil ,
Glisser une formule sur 100 000 lignes, vous êtes hards, mes très cher Victor et Jean-Claude ...
Via un RegExp, à tester :
Code:
Sub Test()
Dim I As Integer
Application.ScreenUpdating = False
With CreateObject("vbscript.regexp")
.Global = False
.Pattern = "(\d+/\d\d)(1)(\d*-\d*)"
For I = 2 To Range("X" & Rows.Count).End(xlUp).Row
If .Test(Range("X" & I)) Then
Range("S" & I) = .Replace(Range("X" & I), "$13$3")
Else
Range("S" & I) = Range("X" & I)
End If
Next I
End With
Application.ScreenUpdating = True
End Sub
Re ,
tu es "un peu farce" comme on dit chez nous ...
Tu n'est plus dans ton exemple de départ ...
A tester
Code:
Sub Test()
Dim I As Integer
Application.ScreenUpdating = False
With CreateObject("vbscript.regexp")
.Global = False
.Pattern = "(\d+/\d\d)(1)(\d*-.*)"
For I = 2 To Range("D" & Rows.Count).End(xlUp).Row
If .Test(Range("D" & I)) Then
Range("B" & I) = .Replace(Range("D" & I), "$13$3")
Else
Range("B" & I) = Range("D" & I)
End If
Next I
End With
Application.ScreenUpdating = True
End Sub
Tu parles d'affiner, mais c'est pas tes explications qui s'affinent...
Stricto senso, si j'ai compris, tu souhaites que tout ce qui est "/111" puis "1 à 7" puis "0-" se transforme en "/113" en gardant le "1 à 7" puis "0-21" en supprimant ce qu'il y avait derrière ...
Code:
Sub Test()
Dim I As Integer
Application.ScreenUpdating = False
With CreateObject("vbscript.regexp")
.Global = False
.Pattern = "(\d+/11)(1)([1-7]0-)(.*)"
For I = 2 To Range("D" & Rows.Count).End(xlUp).Row
If .Test(Range("D" & I)) Then
Range("B" & I) = .Replace(Range("D" & I), "$13$321")
Else
Range("B" & I) = Range("D" & I)
End If
Next I
End With
Application.ScreenUpdating = True
End Sub
Il faut comprendre que j'utilise un motif pour d'abord tester si la référence est valide, puis la transformer ...
Le premier motif était :
Code:
"(\d+/\d\d)(1)(\d*-\d*)
soit "1 ou plus de chiffre" "/" "2 chiffres", le tout entouré de parenthèse que tu récupères au remplacement avec "$1"
"1" qui sera $2
"0 ou plusieurs chiffres" "-" et ""0 ou plusieurs chiffres" qui sera "$3"
Donc je remplace "$2" au passage par "3" ce qui donne
Code:
$13$3
Après, tu ajoutes des lettres, donc je modifie la fin du motif avec
Code:
"(\d+/\d\d)(1)(\d*-.*)
".*" c'est 0 ou plusieurs caractères ...
Donc le dernier motif
Code:
(\d+/11)(1)([1-7]0-)(.*)
accepte "1 ou plusieurs chiffres" puis "/11" ("$1")
Toujours "1" ("$2")
"1 à 7" puis "0-" ("$3")
"0 ou plusieurs caractères" ("$4")
Et donc, je remplace par
Code:
$13$321
Si tu as tout compris, tu va pouvoir continuer à affiner
Bon courage
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.