Extraire les valeurs de cellules contenant x
corben
-
David -
David -
Bonjour,
Je suis nouveau sur le forum, aussi, pardonnez mes questions de débutant...
Je dispose d'une feuille dans laquelle des cellules contiennent le caractère "X" suivi de données (une donnée par cellule, par exemple 12.589).
Je souhaiterais savoir s'il serait possible d'extraire toutes ces données (lesquelles pouvant se trouver n'importe où dans une feuille contenant trois colonnes A, B et C) et de les coller dans une autre colonne de cette même feuille (par exemple D).
Merci beaucoup pour votre aide à tous
Je suis nouveau sur le forum, aussi, pardonnez mes questions de débutant...
Je dispose d'une feuille dans laquelle des cellules contiennent le caractère "X" suivi de données (une donnée par cellule, par exemple 12.589).
Je souhaiterais savoir s'il serait possible d'extraire toutes ces données (lesquelles pouvant se trouver n'importe où dans une feuille contenant trois colonnes A, B et C) et de les coller dans une autre colonne de cette même feuille (par exemple D).
Merci beaucoup pour votre aide à tous
Configuration: Windows XP Internet Explorer 6.0
7 réponses
-
Salut corben
Si je comprends bien ton problème :
tu as 3 colonne, tu veux récupérer la valeurs des cellules qui contient un x dans une quatrième colone,
Question
Comment ca se passe si sur la meme ligne, 2 colonnes ont un x ?
David-
Bonjour David, merci pour tes posts.
Dans mon cas, il ne peut pas y avoir deux fois X sur la même ligne. Par contre, les cellules contenant les x ne sont pas forcément toujours dans la même colonne même si EN GENERAL (pas toujours, si non ça aurait été plus simple !), la colonne A contient les X, la colonne B les Y et la colonne C, les Z !
Je vais essayer ton programme tout de suite !
Merci beaucoup !
A bienôt,
Corben
-
-
Je t'ais fait une petite fonction qui devrais te suffire après adaptation pour 3 colonnes
Sub verif_x()
Dim i, temp
i = 1
While Not Cells(i, 1) = ""
For j = 0 To Len(CStr(Cells(i, 1)))
temp = Mid(CStr(Cells(i, 1)), j + 1, 1)
If (temp = "x") Then
Cells(i, 2) = Cells(i, 1)
Exit For
End If
Next
i = i + 1
Wend
End Sub
David-
Salut David,
Je suis vraiment débutant en la matière alors j'ai essayé de coller ton code dans "Module1" sous visual basic (depuis Excel) et la Macro ne modifie rien à mon fichier de départ. Je ne sais pas où sont placée les valeurs extraites et comment modifier ton code pour obtenir des résultats.
Peux tu m'aiguiller un peu plus ?
Merci de m'avoir répondu aussi rapidement, en attendant, je vais essayer de comprendre comment fonctionne ton code...
Corben- Re
Sub verif_num()
Dim i, temp
i = 1
While Not Cells(i, 1) = ""
For j = 0 To Len(CStr(Cells(i, 1)))
temp = Mid(CStr(Cells(i, 1)), j + 1, 1)
If (temp = "x") Then
Cells(i, 4) = Cells(i, 1)
Exit For
End If
Next
i = i + 1
Wend
i = 1
While Not Cells(i, 2) = ""
For j = 0 To Len(CStr(Cells(i, 2)))
temp = Mid(CStr(Cells(i, 2)), j + 1, 1)
If (temp = "x") Then
Cells(i, 4) = Cells(i, 2)
Exit For
End If
Next
i = i + 1
Wend
i = 1
While Not Cells(i, 3) = ""
For j = 0 To Len(CStr(Cells(i, 3)))
temp = Mid(CStr(Cells(i, 3)), j + 1, 1)
If (temp = "x") Then
Cells(i, 4) = Cells(i, 3)
Exit For
End If
Next
i = i + 1
Wend
End Sub
Voila un script qui devrais te permettre de parcourir les 3 colonnes de ton fichier.
Ouvre vb via le raccourci clavier alt F11
double clique sur la feuille que tu veux traiter
colle le code que je t'ais donné
puis click sur le logo play en haut
En théorie, si tu reviens sur ton fichier de base, ca devrai t'avoir mis les cellules comportant des x dans la cellule 4 de la meme ligne
Voila
David - Re,
J'ai suivi tes consignes mais mon fichier Excel n'est toujours pas modifié.
Il se présente sous cette forme (pour l'exemple que je cherche à faire fonctionner!)
A B C
1 X1.8 Y23.1 Z153
2 X132 Y3564 Z1.854
3 X1.58 Y65.6 Z64.56
......
Par la suite, il pourra y avoir des lignes sans x par exemple.
Je ne sais pas ce que je ne fais pas bien........
Merci de ton aide..
Corben - Tiens mets ca meme
Je balance tout en minuscule au moins, il n'y a pas de souci
Sub verif_num()
Dim i, temp
i = 1
While Not Cells(i, 1) = ""
For j = 0 To Len(CStr(Cells(i, 1)))
temp = Mid(LCase(CStr(Cells(i, 1))), j + 1, 1)
If (temp = "x") Then
Cells(i, 4) = Cells(i, 1)
Exit For
End If
Next
i = i + 1
Wend
i = 1
While Not Cells(i, 2) = ""
For j = 0 To Len(CStr(Cells(i, 2)))
temp = Mid(LCase(CStr(Cells(i, 2))), j + 1, 1)
If (temp = "x") Then
Cells(i, 4) = Cells(i, 2)
Exit For
End If
Next
i = i + 1
Wend
i = 1
While Not Cells(i, 3) = ""
For j = 0 To Len(CStr(Cells(i, 3)))
temp = Mid(LCase(CStr(Cells(i, 3))), j + 1, 1)
If (temp = "x") Then
Cells(i, 4) = Cells(i, 3)
Exit For
End If
Next
i = i + 1
Wend
End Sub
David
-
-
Merci beaucoup, et excuse moi pour l'erreur grossière........... je ne savais même pas que les minuscules et majuscules étaient différenciées...
A bientôt,
Corben -
Ca fonctionne très bien, je vais essayer de modifier cela afin que ça prenne les valeurs de X lorsque le X se trouve dans la colonne B ou C car pour le moment ça ne prend que les valeurs de la colonne A.
Merci pour ton aide,
Corben -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ouah, ça va tellement vite que c'est quasiment du chat ! Je mets résolu et continue mes recherches !
Corben -
Je ne sais même pas comment afficher l'état de la discussion en cours comme étant résolue !
-
Correction,
En fait, cela fonctionne, c'est juste que dans mon fichier d'essais, certaines cellules sont vides alors je suppose que c'est pour cela que ça s'arrêtait de scanner (ex: ligne 10, rien en A, rien en B et X25 en C, ligne 11, rien en A, X25 en B et rien en C).
Désolé pour l'erreur
Corben