Problème avec fonction recherche et remplace pour le symbole "?"
Résolu/Fermé
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
-
Modifié par bassmart le 5/04/2016 à 13:53
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 11 avril 2016 à 18:47
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 11 avril 2016 à 18:47
A voir également:
- Problème avec fonction recherche et remplace pour le symbole "?"
- Fonction si et - Guide
- Quel site remplace coco - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Rechercher et remplacer word - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
3 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
Modifié par gbinforme le 5/04/2016 à 22:13
Modifié par gbinforme le 5/04/2016 à 22:13
Bonjour,
Le point d'interrogation (?), est un caractère générique qui remplace n'importe quel caractère, alors bien sûr, c'est un cas particulier.
En consultant le support tu as la solution :
https://support.microsoft.com/en-us/office/find-or-replace-text-and-numbers-on-a-worksheet-0e304ca5-ecef-4808-b90f-fdb42f892e90?ui=en-us&rs=en-us&ad=us
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
Le point d'interrogation (?), est un caractère générique qui remplace n'importe quel caractère, alors bien sûr, c'est un cas particulier.
En consultant le support tu as la solution :
https://support.microsoft.com/en-us/office/find-or-replace-text-and-numbers-on-a-worksheet-0e304ca5-ecef-4808-b90f-fdb42f892e90?ui=en-us&rs=en-us&ad=us
Cells.Replace what:="~?", replacement:="", lookat:=xlWhole
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
6 avril 2016 à 12:20
6 avril 2016 à 12:20
Bonjour tous les deux,
Dites moi, avec un certains nombre de lignes, va être longue à exécuter cette macro...
@Bassmart : un pitit coup de main pour accélérer le bouzin?
Dites moi, avec un certains nombre de lignes, va être longue à exécuter cette macro...
@Bassmart : un pitit coup de main pour accélérer le bouzin?
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
1
6 avril 2016 à 13:48
6 avril 2016 à 13:48
Bonjour pijaku,
effectivement la macro est longue d'exécution! Je pensais que c'était dû aux nombres de fichiers excel à traités, en plus chaque fichiers peut contenir plusieurs feuilles.
C'est certain que si on peux améliorer la vitesse, je ne dit pas non!
merci!
effectivement la macro est longue d'exécution! Je pensais que c'était dû aux nombres de fichiers excel à traités, en plus chaque fichiers peut contenir plusieurs feuilles.
C'est certain que si on peux améliorer la vitesse, je ne dit pas non!
merci!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
>
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
6 avril 2016 à 14:00
6 avril 2016 à 14:00
Pour cela, il nous faudra le classeur contenant la macro + 1 ou 2 classeurs "à ouvrir".
Pour joindre un fichier sur les forums de ccm il faut:
________________________________________________________
- se rendre sur le site : https://www.cjoint.com/
- cliquer sur parcourir
- rechercher le fichier
- cliquer sur ouvrir
- cliquer sur créer le lien Cjoint
- copier le lien
- revenir ici le coller dans une réponse
________________________________________________________
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
1
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
6 avril 2016 à 14:28
6 avril 2016 à 14:28
Et voilà mes fichiers!
http://www.cjoint.com/c/FDgmzE3B0to, Macro
http://www.cjoint.com/c/FDgmAacIzSo, fichier test
http://www.cjoint.com/c/FDgmAVO8Zqo, fichier test
http://www.cjoint.com/c/FDgmzE3B0to, Macro
http://www.cjoint.com/c/FDgmAacIzSo, fichier test
http://www.cjoint.com/c/FDgmAVO8Zqo, fichier test
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
1
6 avril 2016 à 14:33
6 avril 2016 à 14:33
J'ai une demande, la macro m'avertie présentement chaque fois qu'elle découvre une valeur "x" dans le fichier.
Mais je voudrais qu'elle me donne, seulement à la fin, le nombre total de valeur qui ont été remplacé que ce soit: x, plein, cassé, brisé et ?
Merci beaucoup!
Mais je voudrais qu'elle me donne, seulement à la fin, le nombre total de valeur qui ont été remplacé que ce soit: x, plein, cassé, brisé et ?
Merci beaucoup!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
6 avril 2016 à 15:14
6 avril 2016 à 15:14
Qu'est censé faire ta macro???
1- ouvrir x fichiers
2- boucler sur toutes les feuilles
3- si, en colonne E on trouve "X" ET qu'en colonne O on a "plein d'eau"
alors la colonne E = "0"
sinon la colonne E = ""
4- remplacer, en colonne E, les cellules contenant plein, cassé, brisé et ? par rien
5- renvoyer le nombre de X, plein, cassé, brisé et ?
C'est bien ça?
Par ec que c'est pas clair...
Tu m'envoie 2 fichiers à traiter, le premier .xlsm ne risque pas d'être ouvert par ta macro et le second ne contient aucun X en colonne E...
Alors, stp, soit clair.
1- ouvrir x fichiers
2- boucler sur toutes les feuilles
3- si, en colonne E on trouve "X" ET qu'en colonne O on a "plein d'eau"
alors la colonne E = "0"
sinon la colonne E = ""
4- remplacer, en colonne E, les cellules contenant plein, cassé, brisé et ? par rien
5- renvoyer le nombre de X, plein, cassé, brisé et ?
C'est bien ça?
Par ec que c'est pas clair...
Tu m'envoie 2 fichiers à traiter, le premier .xlsm ne risque pas d'être ouvert par ta macro et le second ne contient aucun X en colonne E...
Alors, stp, soit clair.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
6 avril 2016 à 16:23
6 avril 2016 à 16:23
Qu'il trouve les valeur "X" => ok. Mais ou? Dans qu'elle colonne???
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
1
6 avril 2016 à 18:19
6 avril 2016 à 18:19
Toujours dans la colonne E (L1), qui correspond à des lectures en mètre. Ces valeurs doivent absolument être des valeurs numériques, c'est pourquoi, je remplace les valeurs X, ?, cassé, brisé, etc.. par 0 ou par rien.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
>
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
6 avril 2016 à 18:35
6 avril 2016 à 18:35
Bon.
Tu va tester ça sur des copies de deux trois classeurs cibles.
Ok?
Par contre, dans les commentaires de la macro, tu verras ceci (je n'ai pas compris ce que tu cherches à faire. Rien à mon avis...) :
J'ai également ajouté le .Close sur ActiveWorkbook... Mais je ne suis pas sur de moi à 100%...
Tu va tester ça sur des copies de deux trois classeurs cibles.
Ok?
Par contre, dans les commentaires de la macro, tu verras ceci (je n'ai pas compris ce que tu cherches à faire. Rien à mon avis...) :
'CETTE PARTIE LA EST ENCORE A M'EXPLIQUER : ' If .Range("D" & N) <> "" Then ' If .Range("A" & N) <> "" Then ' TInfos = .Range("A" & N & ":C" & N) ' Else ' .Range("A" & N & ":C" & N) = TInfos ' End If ' End If '------------ FIN EXPLICATIONS
J'ai également ajouté le .Close sur ActiveWorkbook... Mais je ne suis pas sur de moi à 100%...
Option Explicit Private Sub CommandButton1_Click() Dim nombre As Integer Dim QuelFichier() Dim Chemin As String, Fichier As String, Nomclasseur As String Dim DerLig As Long 'Dim plage As Range Dim cible As String 'Dim r As Range Dim CptPlein As Long, CptCasse As Long, CptBrise As Long, CptInterr As Long, CptX As Long cible = "plein d'eau" ChDrive "m" ChDir "M:\Entrepot\BDFS\1_Piézomètres\" On Error GoTo fin QuelFichier = Application.GetOpenFilename("Fichier excel(*.xls; *.xlsx),*.xls;*.xlsx", , , , True) If IsArray(QuelFichier) Then For i = LBound(QuelFichier, 1) To UBound(QuelFichier, 1) Workbooks.Open QuelFichier(i) '------------------------------------------- 'Nom de fichier SANS extention en partant du chemin complet Nomclasseur = Left(Mid(QuelFichier(i), InStrRev(QuelFichier(i), "\") + 1), Len(Mid(QuelFichier(i), InStrRev(QuelFichier(i), "\") + 1)) - 4) '------------------------------------------- Application.ScreenUpdating = False 'nombre = ActiveWorkbook.Sheets.Count 'For N = 2 To nombre ' Worksheets(N).Unprotect 'Next N For x = 2 To Sheets.Count - 1 With Sheets(x) .Unprotect Sheets(x).Columns("E:O").EntireColumn.Hidden = False DerLig = .Range("E" & Rows.Count).End(xlUp).Row For N = 2 To DerLig Select Case .Range("E" & N).Value Case "plein" .Range("E" & N).Value = 0 CptPlein = CptPlein + 1 Case "cassé" .Range("E" & N).Value = "" CptCasse = CptCasse + 1 Case "brisé" .Range("E" & N).Value = "" CptBrise = CptBrise + 1 Case "?" .Range("E" & N).Value = "" CptInterr = CptInterr + 1 Case "X", "x" CptX = CptX + 1 If .Range("E" & N).Offset(0, 10) = cible Then .Range("E" & N).Value = "" Else .Range("E" & N).Value = 0 End If Case Else End Select Next N .Protect End With Next x 'CETTE PARTIE LA EST ENCORE A M'EXPLIQUER : ' If .Range("D" & N) <> "" Then ' If .Range("A" & N) <> "" Then ' TInfos = .Range("A" & N & ":C" & N) ' Else ' .Range("A" & N & ":C" & N) = TInfos ' End If ' End If '------------ FIN EXPLICATIONS ' Next N ' Sheets(x).Range("A2").Select ' End With 'Next x 'nombre = ActiveWorkbook.Sheets.Count 'For N = 2 To nombre ' Worksheets(N).Protect 'Next N Chemin = CurDir & "\Transfert\" Fichier = Nomclasseur & "_traité" & ".xlsx" On Error Resume Next With ActiveWorkbook .SaveCopyAs Chemin & Fichier '!!!!!!!!!!!!!! A TESTER .Close End With '------------------------------------------- Next i Else MsgBox "Annuler" End If MsgBox "Vous avez corrigé :" & vbCrLf & _ CptX & " X," & vbCrLf & _ CptBrise & " brisé," & vbCrLf & _ CptCasse & " cassé," & vbCrLf & _ CptInterr & " ?," & vbCrLf & _ CptPlein & " plein." UserForm1.Hide ThisWorkbook.Saved = True Application.ScreenUpdating = True UserForm2.Show fin: Application.Quit End Sub
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
1
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
6 avril 2016 à 21:13
6 avril 2016 à 21:13
Merci beaucoup, je teste ça!
Pour les lignes que tu mentionnent, je vient de me souvenir!
C'est un aspect quand même important que j'avais complètement oublié, désolé!
C'est que dans les colonnes A, B et C se retrouve des valeurs mais seulement sur la première ligne de chacune des nouveaux emplacement de lecture. Donc, il me faut recopier cette valeur jusqu'à la prochaine valeur différente de la colonne C.
Alors la macro, détecte la dernière ligne non vide de la colonne D parce que c'est la première colonne de la feuille à contenir des valeurs jusqu'à la fin. Recopie la valeur de la colonne A, B et C jusqu'à la nouvelle valeur de la colonne C.
Merci pour le coup de main!
Pour les lignes que tu mentionnent, je vient de me souvenir!
C'est un aspect quand même important que j'avais complètement oublié, désolé!
C'est que dans les colonnes A, B et C se retrouve des valeurs mais seulement sur la première ligne de chacune des nouveaux emplacement de lecture. Donc, il me faut recopier cette valeur jusqu'à la prochaine valeur différente de la colonne C.
Alors la macro, détecte la dernière ligne non vide de la colonne D parce que c'est la première colonne de la feuille à contenir des valeurs jusqu'à la fin. Recopie la valeur de la colonne A, B et C jusqu'à la nouvelle valeur de la colonne C.
Merci pour le coup de main!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
>
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
7 avril 2016 à 07:45
7 avril 2016 à 07:45
Bonjour,
Ce que tu as codé ne correspond pas du tout à ce que tu me dis concernant les colonnes A, B et C...
Bon attendons déjà de faire fonctionner le reste, on reviendra là dessus après.
Ce que tu as codé ne correspond pas du tout à ce que tu me dis concernant les colonnes A, B et C...
Bon attendons déjà de faire fonctionner le reste, on reviendra là dessus après.
bassmart
Messages postés
281
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
19 décembre 2023
1
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
7 avril 2016 à 15:22
7 avril 2016 à 15:22
Bonjour,
Bon, j'ai testé le tout!
Pour de ce qui est de la vérification de la valeur "X" dans la colonne E si le texte de la colonne O est égale à "plein d'eau", la valeur de la colonne E est alors égale "0". Ne fonctionne pas, voir feuille Z32164 (fichier1_test).
Pour le reste ça fonctionne bien!
Pour le code concernant les colonnes A, B et C, je ne suis pas un expert et ce n'est pas moi qui l'écrit, mais c'est ce que ça fait en gros! C'est probablement mon explication qui est erroné, mais le résultats que j'ai c'est ça.
Merci beaucoup!
Bon, j'ai testé le tout!
Pour de ce qui est de la vérification de la valeur "X" dans la colonne E si le texte de la colonne O est égale à "plein d'eau", la valeur de la colonne E est alors égale "0". Ne fonctionne pas, voir feuille Z32164 (fichier1_test).
Pour le reste ça fonctionne bien!
Pour le code concernant les colonnes A, B et C, je ne suis pas un expert et ce n'est pas moi qui l'écrit, mais c'est ce que ça fait en gros! C'est probablement mon explication qui est erroné, mais le résultats que j'ai c'est ça.
Merci beaucoup!
6 avril 2016 à 13:43