Chaîne de caractères sur Excel
Résolu/Fermé
SakiManiac
Messages postés
24
Date d'inscription
mardi 1 novembre 2016
Statut
Membre
Dernière intervention
15 novembre 2016
-
Modifié par SakiManiac le 3/11/2016 à 10:14
SakiManiac Messages postés 24 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 15 novembre 2016 - 4 nov. 2016 à 11:24
SakiManiac Messages postés 24 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 15 novembre 2016 - 4 nov. 2016 à 11:24
A voir également:
- Chaîne de caractères sur Excel
- Liste déroulante excel - Guide
- Formule excel - Guide
- Excel extraire chaine de caractère après un caractère ✓ - Forum Excel
- Caractères ascii - Guide
- Déplacer une colonne excel - Guide
3 réponses
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
3 nov. 2016 à 15:23
3 nov. 2016 à 15:23
Bonjour
comme je te l'ai dit hier VBA n'est pas mon fort, mais j'ai bricolé un truc, ça n'est surement pas optimisé, d'autres pourront mieux faire.
Je n'ai pas accés au site ou Konseil a posté son code (mon boulot le bloque et ma tablette me mets une page vide sur fond bleu), donc j'ai fait comme je le sentais
comme je te l'ai dit hier VBA n'est pas mon fort, mais j'ai bricolé un truc, ça n'est surement pas optimisé, d'autres pourront mieux faire.
Je n'ai pas accés au site ou Konseil a posté son code (mon boulot le bloque et ma tablette me mets une page vide sur fond bleu), donc j'ai fait comme je le sentais
Sub Macro1()
Dim lesGarcons() As String
lesGarcons = TableauDeDonnees("Feuil2", "A")
Dim lesFilles() As String
lesFilles = TableauDeDonnees("Feuil3", "A")
Dim lesAdresses() As String
lesAdresses = TableauDeDonnees("Feuil1", "E")
For i = LBound(lesAdresses) To UBound(lesAdresses)
Dim prenom As String
Dim sexe As String
Dim garcon As Boolean
Dim prenomGarcon As String
garcon = CompareAdresseEtTableau(lesGarcons, lesAdresses(i), prenomGarcon)
Dim fille As Boolean
Dim prenomFille As String
fille = CompareAdresseEtTableau(lesFilles, lesAdresses(i), prenomFille)
If fille And garcon Then
'si on a trouvé un prénom de fille et de garcon
MsgBox (lesAdresses(i) + " donne " + prenomGarcon + " ou " + prenomFille)
prenom = prenomGarcon + " ou " + prenomFille
sexe = ""
ElseIf garcon Then
sexe = "M"
prenom = prenomGarcon
ElseIf fille Then
sexe = "F"
prenom = prenomFille
End If
If garcon Or fille Then 'si un résultat a été trouvé on l'affiche
With Worksheets("Feuil1")
.Range("F" & i + 2).Value = sexe
.Range("C" & i + 2).Value = prenom
End With
End If
Next i
End Sub
Function TableauDeDonnees(NomFeuille As String, Colonne As String) As String()
With Worksheets(NomFeuille)
Dim donnees As Variant
Dim dernierLigne As Integer
dernierLigne = .Range(Colonne & Rows.Count).End(xlUp).Row 'dernière ligne non vide
Dim leRange As String
leRange = Colonne & "2:" & Colonne & dernierLigne
donnees = .Range(leRange).Value 'toutes les données de la plage A2-> ADerniereLigneNonVide
Dim tailleTableau As Integer
Dim resultat() As String
ReDim resultat(dernierLigne - 2)
For i = 1 To UBound(donnees, 1) 'Extraction des données sous forme d'un tableau de string
resultat(i - 1) = donnees(i, 1)
Next i
TableauDeDonnees = resultat
End With
End Function
Function CompareAdresseEtTableau(TableauDePrenoms() As String, Adresse As String, ByRef PrenomTrouve) As Boolean
'comparaison avec l'opérateur Like
For i = LBound(TableauDePrenoms) To UBound(TableauDePrenoms)
If Adresse Like "*" & TableauDePrenoms(i) & "*@*.*" Then'si ça ressemble à un email avec le prénom dedans
'si l'adresse correspond à un prénom, on affecte le resulat et on sort
CompareAdresseEtTableau = True
PrenomTrouve = TableauDePrenoms(i)
Exit Function
End If
Next i
'si aucun prenom trouvé
CompareAdresseEtTableau = False
PrenomTrouve = ""
End Function
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
3 nov. 2016 à 18:54
3 nov. 2016 à 18:54
Petite info utile pour l'utilisation de CCM, si tu cliques sur le gros bouton bleu Répondre, au lieu du petit lien "commenter la reponse de..." tu auras accès à une boîte de saisie qui permet de placer une image directement sur le forum, c'est plus pratique pour le lecteur.
Voir https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#insertion-via-le-bouton-d-edition
Pour ton problème, dans les versions récentes d'excel (à partir de 2007 je crois), un classeur avec macro n'a pas la même extension qu'un classeur sans macro:
Il te suffit donc de faire enregistrer sous et de choisir le format xlsm
Voir https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#insertion-via-le-bouton-d-edition
Pour ton problème, dans les versions récentes d'excel (à partir de 2007 je crois), un classeur avec macro n'a pas la même extension qu'un classeur sans macro:
- xlsx pas de macro
- xlsm macro.
Il te suffit donc de faire enregistrer sous et de choisir le format xlsm
SakiManiac
Messages postés
24
Date d'inscription
mardi 1 novembre 2016
Statut
Membre
Dernière intervention
15 novembre 2016
Modifié par SakiManiac le 4/11/2016 à 10:55
Modifié par SakiManiac le 4/11/2016 à 10:55
SakiManiac
Messages postés
24
Date d'inscription
mardi 1 novembre 2016
Statut
Membre
Dernière intervention
15 novembre 2016
4 nov. 2016 à 11:24
4 nov. 2016 à 11:24
Bonjour,
Merci ça a marché. :D
Bonne journée
Merci ça a marché. :D
Bonne journée

3 nov. 2016 à 18:45
Je te remercie de ta réponse. Après avoir lus et relus le code je crois que ça devrai marcher.
Parcontre quand je crée une macro et je copie le code dessus, je n'ai pas la possibilité d'enregistrer le code. Voici le message d'erreur : https://imgur.com/a/hCCa1
Je m'excuse pour le tas de questions mais je suis complétement débutant en macros tout ce que j'ai fait auparavant c'est utiliser des formules Excel.
3 nov. 2016 à 19:19