Macros... Grand besoin d'aide
Résolu
-
-
-
Bonjour,
Je suis extrêmement novice en macros, je sais à peu près lire les codes, et plus ou moins les modifier quand j'en comprends l'objectif, mais j'en au deux à rédiger qui me semblent très difficiles.. Alors... Bouteille à la mer..
La 1/
J'ai une bdd avec entre autres 2 colonnes : "Nom" et "prénoms" (dans cet ordre)
En réalisé, la seule colonne renseignée est "Nom" où figurent le prénom suivi d'un espace puis du nom, et donc rien dans la colonne "prénoms"
J'aimerais les splitter, et j'ai plus ou moins récupéré des codes sur des forums, mais ça ne marche toujours pas.
Dans le doute que la macro ne reconnaisse pas le 1er espace avec lequel je veux splitter, j'ai réussi à le transformer en "3" pour ensuite pouvoir couper mais ça ne marche pas.
ça donne quelque chose comme :
"Sub Bouton2_Clic()
Dim i, derlig As Integer
derlig = Range("B65536").End(xlUp).Row
Sheets("Feuil1").Columns("B:B").Replace " ", "3"
For i = 1 To derlig
Cells(i) = Right(Cells(i), Len(Cells(i)) - InStr(Cells(i), "3"))
Next
End Sub"
Pour info, une bonne partie des lignes est vide, et il faut qu'elles le restent, alors il ne faut pas que cela s'applique sur des lignes vides.
la 2/ J'ai une ligne par fournisseur, et plusieurs colonnes censées comprendre des montants.
Certains de ses montants sont négatifs.
J'ai besoin que ma macro remplace les montants négatifs par des 0.
Ensuite, si pour cette même ligne, il n'y a aucun autre montant, il faut que je supprime la ligne.. Alors là autant dire que je suis complètement paumée...
Quelqu'un peut aider ?
Sandrine
Je suis extrêmement novice en macros, je sais à peu près lire les codes, et plus ou moins les modifier quand j'en comprends l'objectif, mais j'en au deux à rédiger qui me semblent très difficiles.. Alors... Bouteille à la mer..
La 1/
J'ai une bdd avec entre autres 2 colonnes : "Nom" et "prénoms" (dans cet ordre)
En réalisé, la seule colonne renseignée est "Nom" où figurent le prénom suivi d'un espace puis du nom, et donc rien dans la colonne "prénoms"
J'aimerais les splitter, et j'ai plus ou moins récupéré des codes sur des forums, mais ça ne marche toujours pas.
Dans le doute que la macro ne reconnaisse pas le 1er espace avec lequel je veux splitter, j'ai réussi à le transformer en "3" pour ensuite pouvoir couper mais ça ne marche pas.
ça donne quelque chose comme :
"Sub Bouton2_Clic()
Dim i, derlig As Integer
derlig = Range("B65536").End(xlUp).Row
Sheets("Feuil1").Columns("B:B").Replace " ", "3"
For i = 1 To derlig
Cells(i) = Right(Cells(i), Len(Cells(i)) - InStr(Cells(i), "3"))
Next
End Sub"
Pour info, une bonne partie des lignes est vide, et il faut qu'elles le restent, alors il ne faut pas que cela s'applique sur des lignes vides.
la 2/ J'ai une ligne par fournisseur, et plusieurs colonnes censées comprendre des montants.
Certains de ses montants sont négatifs.
J'ai besoin que ma macro remplace les montants négatifs par des 0.
Ensuite, si pour cette même ligne, il n'y a aucun autre montant, il faut que je supprime la ligne.. Alors là autant dire que je suis complètement paumée...
Quelqu'un peut aider ?
Sandrine
A voir également:
- Macros... Grand besoin d'aide
- Photo insta en grand - Guide
- Trier du plus petit au plus grand excel - Guide
- Ordinateur portable grand ecran - Guide
- Signe plus grand que clavier - Forum Shell
- Touche "plus petit", "plus grand" ✓ - Forum Windows Vista
5 réponses
Salut,
Pourquoi ne pas utiliser simplement la fonction convertir pour séparer le nom du prénom (Données/Convertir).
Au passage qu'elle est ta version excel
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Pourquoi ne pas utiliser simplement la fonction convertir pour séparer le nom du prénom (Données/Convertir).
Au passage qu'elle est ta version excel
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Pas besoin de macro.
Soit en A2 "Nom Prénom"
Vous insérez 2 colonnes après la A (soit B et C).
Pour avoir le nom en B2, copier/coller cette formule :
=GAUCHE(A2;CHERCHE(" ";A2)-1)
Pour avoir le Prénom en C2, copier/coller cette formule :
=DROITE(A2;NBCAR(A2)-CHERCHE(" ";A2))
Michel
Soit en A2 "Nom Prénom"
Vous insérez 2 colonnes après la A (soit B et C).
Pour avoir le nom en B2, copier/coller cette formule :
=GAUCHE(A2;CHERCHE(" ";A2)-1)
Pour avoir le Prénom en C2, copier/coller cette formule :
=DROITE(A2;NBCAR(A2)-CHERCHE(" ";A2))
Michel
Re,
Dans le domaine du VBA, suivant tes explications, en colonne A tu as le Prénom suivi d'un espace et le Nom, tu souhaites laisser en A le Nom et le prénom en B
regarde ce code
Sub séparateur_De_Mots()
For L = 2 To [A65536].End(xlUp).Row ' Application de la ligne 2 à la dernière ligne non vide
Mot1Mot2 = Cells(L, "A") ' Colonne de référence, ici A
I = InStr(Mot1Mot2, " ") ' recherche 1' espace entre les mots
If I = 0 Then ' Si aucun espace trouvé dans une cellule
Cells(L, "B") = Cells(L, "A") ' Reporte le mot en B
Else ' Si espace entre mot
Cells(L, "B") = Left(Mot1Mot2, I - 1) ' Premier mot isolé en B
Cells(L, "A") = Mid(Mot1Mot2, I + 1) ' deuxième mot mot isolé en C
End If
Next
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Dans le domaine du VBA, suivant tes explications, en colonne A tu as le Prénom suivi d'un espace et le Nom, tu souhaites laisser en A le Nom et le prénom en B
regarde ce code
Sub séparateur_De_Mots()
For L = 2 To [A65536].End(xlUp).Row ' Application de la ligne 2 à la dernière ligne non vide
Mot1Mot2 = Cells(L, "A") ' Colonne de référence, ici A
I = InStr(Mot1Mot2, " ") ' recherche 1' espace entre les mots
If I = 0 Then ' Si aucun espace trouvé dans une cellule
Cells(L, "B") = Cells(L, "A") ' Reporte le mot en B
Else ' Si espace entre mot
Cells(L, "B") = Left(Mot1Mot2, I - 1) ' Premier mot isolé en B
Cells(L, "A") = Mid(Mot1Mot2, I + 1) ' deuxième mot mot isolé en C
End If
Next
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Salut Mic,
effectivement s'il n'y a pas d'espace le code ne marche pas, il est possible que le nom et prénom soit séparé par un tiret ou chaque mot commence par une majuscule et on peut compléter le code suivant le cas.
En ce qui concerne la répétition accidentelle du code on peut ajouter un détrompeur qui arrêtera le code
enfin à suivre ...
Cordialement
effectivement s'il n'y a pas d'espace le code ne marche pas, il est possible que le nom et prénom soit séparé par un tiret ou chaque mot commence par une majuscule et on peut compléter le code suivant le cas.
En ce qui concerne la répétition accidentelle du code on peut ajouter un détrompeur qui arrêtera le code
enfin à suivre ...
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Merci beaucoup à tous les 2.
En gros, je n'ai pas réussi à flagger, mais du coup j'ai fait 2 macros différentes :
La 1ère c'est la macro de Mike-31 avec la 1ère correction de Mic.
ça donne ça :
Sub Bouton3_Clic()
For L = 4 To [B65536].End(xlUp).Row ' Application de la ligne 4 à la dernière ligne non vide
Mot1Mot2 = Cells(L, "B") ' Colonne de référence, ici la colonne B
I = InStr(Mot1Mot2, " ") ' recherche 1' espace entre les mots
If I > 0 Then ' Si un espace est trouvé dans une cellule
Cells(L, "C") = Left(Mot1Mot2, I - 1) ' Premier mot isolé en colonne C
Cells(L, "B") = Mid(Mot1Mot2, I + 1) ' deuxième mot isolé en colonne B
End If
Next
End Sub
Comme je n'ai pas réussi à flagger, et qu'effectivement un nom composé déplacé par une 1ère exécution en colonne B, effacer le prénom de la colonne C, j'ai fait raccourci qui élimine les espaces restants dans la colonne B :
Sub Bouton4_Clic()
For L = 4 To [B65536].End(xlUp).Row
Cells(L, "B").Replace " ", "" 'Elimine les espaces (noms composés) restant dans la colonne B (NOM
Next
End Sub
ça semble bien marcher, alors encore un grand merci pour votre aide. Je ne m'en serais pas sortie autrement.
Sandrine
Merci beaucoup à tous les 2.
En gros, je n'ai pas réussi à flagger, mais du coup j'ai fait 2 macros différentes :
La 1ère c'est la macro de Mike-31 avec la 1ère correction de Mic.
ça donne ça :
Sub Bouton3_Clic()
For L = 4 To [B65536].End(xlUp).Row ' Application de la ligne 4 à la dernière ligne non vide
Mot1Mot2 = Cells(L, "B") ' Colonne de référence, ici la colonne B
I = InStr(Mot1Mot2, " ") ' recherche 1' espace entre les mots
If I > 0 Then ' Si un espace est trouvé dans une cellule
Cells(L, "C") = Left(Mot1Mot2, I - 1) ' Premier mot isolé en colonne C
Cells(L, "B") = Mid(Mot1Mot2, I + 1) ' deuxième mot isolé en colonne B
End If
Next
End Sub
Comme je n'ai pas réussi à flagger, et qu'effectivement un nom composé déplacé par une 1ère exécution en colonne B, effacer le prénom de la colonne C, j'ai fait raccourci qui élimine les espaces restants dans la colonne B :
Sub Bouton4_Clic()
For L = 4 To [B65536].End(xlUp).Row
Cells(L, "B").Replace " ", "" 'Elimine les espaces (noms composés) restant dans la colonne B (NOM
Next
End Sub
ça semble bien marcher, alors encore un grand merci pour votre aide. Je ne m'en serais pas sortie autrement.
Sandrine