Extraire les valeurs de cellules contenant x

corben -  
 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

7 réponses

David
 
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
0
corben2a Messages postés 8 Statut Membre
 
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
0
David
 
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
0
corben2a Messages postés 8 Statut Membre
 
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
0
David > corben2a Messages postés 8 Statut Membre
 
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
0
corben2a Messages postés 8 Statut Membre > 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
0
David > corben2a Messages postés 8 Statut Membre
 
Si t'es X sont toujours en majuscule, change dans les 3 condition de mon code.
Tu mets un X majuscule à la place du x miniscule
0
David > corben2a Messages postés 8 Statut Membre
 
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
0
corben2a Messages postés 8 Statut Membre
 
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
0
David
 
Pas de souci,

A bientot

David

Ps : Pense à mettre résolue ;)
0
corben2a Messages postés 8 Statut Membre
 
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
0
David
 
Comment ca sur les colonnes B et C ??
Le script parcour les colonnes A B et C normalement et écrit dans D
Ca marche pas chez toi ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
corben2a Messages postés 8 Statut Membre
 
Ouah, ça va tellement vite que c'est quasiment du chat ! Je mets résolu et continue mes recherches !

Corben
0
corben2a Messages postés 8 Statut Membre
 
Je ne sais même pas comment afficher l'état de la discussion en cours comme étant résolue !
0
corben2a Messages postés 8 Statut Membre
 
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
0
David
 
Ok, tu me rassures la
Pas de souci

David
0