[Résol]Calc: dernière occurence d'uncaractère
Fermé
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
-
Modifié par antokomba le 15/02/2011 à 20:37
antokomba Messages postés 16 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 11 avril 2011 - 15 févr. 2011 à 20:18
antokomba Messages postés 16 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 11 avril 2011 - 15 févr. 2011 à 20:18
A voir également:
- [Résol]Calc: dernière occurence d'uncaractère
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Telecharger calc - Télécharger - Divers Web & Internet
- Vba dernière colonne non vide ✓ - Forum VB / VBA
- Supprimer dernière page word - Guide
- Derniere mise a jour ios - Guide
12 réponses
ccm81
Messages postés
10560
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
25 mars 2023
2 337
14 févr. 2011 à 18:25
14 févr. 2011 à 18:25
bonjour,
sans vba je ne sais pas
avec vba un exemple ou le chiffre cherché est en K1 et le resultat en K2
bonne suite
sans vba je ne sais pas
avec vba un exemple ou le chiffre cherché est en K1 et le resultat en K2
Private Sub CommandButton1_Click()
Dim li As Long, derli As Long, ch As Long, co As Long, lich As Long
derli = Range("A65536").End(xlUp).Row
lich = 0
ch = Range("K1").Value
For li = 1 To derli
For co = 1 To 8
If Cells(li, co) = ch Then
lich = li
End If
Next co
Next li
Range("K2").Value = lich
End Sub
bonne suite
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
14 févr. 2011 à 19:33
14 févr. 2011 à 19:33
Si j'ai bien compris c'est une macro qu'il faut que j'utilise?
Tu peux me corriger pour la valeur 11 et le résultat dans la case V400 stp?
Private Sub CommandButton1_Click()
Dim li As Long, derli As Long, ch As Long, co As Long, lich As Long
derli = Range("A65536").End(xlUp).Row
lich = 0
ch = Range("A1:E900").11
For li = 1 To derli
For co = 1 To 8
If Cells(li, co) = ch Then
lich = li
End If
Next co
Next li
Range("v400").Value = lich
End Sub
Tu peux me corriger pour la valeur 11 et le résultat dans la case V400 stp?
Private Sub CommandButton1_Click()
Dim li As Long, derli As Long, ch As Long, co As Long, lich As Long
derli = Range("A65536").End(xlUp).Row
lich = 0
ch = Range("A1:E900").11
For li = 1 To derli
For co = 1 To 8
If Cells(li, co) = ch Then
lich = li
End If
Next co
Next li
Range("v400").Value = lich
End Sub
ccm81
Messages postés
10560
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
25 mars 2023
2 337
Modifié par ccm81 le 14/02/2011 à 20:21
Modifié par ccm81 le 14/02/2011 à 20:21
re
devrait aller
RQ. Cette macro est atachée a un bouton qu'il te faudra mettre sur la feuille ( a prendre dans la boite a outils controles), si tu ne sais pas faire, on peut simplifier la manoeuvre
bonne suite
Private Sub CommandButton1_Click()
Dim li As Long, derli As Long, ch As Long, co As Long, lich As Long
derli = Range("A65536").End(xlUp).Row
lich = 0
ch = 11
For li = 1 To derli
For co = 1 To 8
If Cells(li, co) = ch Then
lich = li
End If
Next co
Next li
Range("v400").Value = lich
End Sub
devrait aller
RQ. Cette macro est atachée a un bouton qu'il te faudra mettre sur la feuille ( a prendre dans la boite a outils controles), si tu ne sais pas faire, on peut simplifier la manoeuvre
bonne suite
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
14 févr. 2011 à 20:48
14 févr. 2011 à 20:48
Je ne sais pas comment on fait pour le boutton :s
J'ai essayé de l'exécuter tel quelle mais j'ai des erreur:
Quand je fait exécuter la macro, ça me met "Erreur de synthaxe BASIC, Private non autorisée dans une procédure"
Aussi j'ai un "Sub Main" dans l'endroit ou j'ai collé la macro, tout au début.
Quand je le supprime j'ai "Erreur d'exécution BASIC. Sous procédure ou procédure de fontion non définie."
J'ai essayé de l'exécuter tel quelle mais j'ai des erreur:
Quand je fait exécuter la macro, ça me met "Erreur de synthaxe BASIC, Private non autorisée dans une procédure"
Aussi j'ai un "Sub Main" dans l'endroit ou j'ai collé la macro, tout au début.
Quand je le supprime j'ai "Erreur d'exécution BASIC. Sous procédure ou procédure de fontion non définie."
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
14 févr. 2011 à 20:54
14 févr. 2011 à 20:54
Aussi je viens de voir ce sujet :https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=26929
Ils disent qu'il faut mettre "Option VBASupport 1" au début pour que les macro VBA marchent.
J'ai donc lancé ma macro avec ça, et ça me donne un 368 en V400, ou j'attendais un 19 (car le premier 11 est sur la ligne 19)
Ils disent qu'il faut mettre "Option VBASupport 1" au début pour que les macro VBA marchent.
J'ai donc lancé ma macro avec ça, et ça me donne un 368 en V400, ou j'attendais un 19 (car le premier 11 est sur la ligne 19)
ccm81
Messages postés
10560
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
25 mars 2023
2 337
14 févr. 2011 à 21:02
14 févr. 2011 à 21:02
et ça me donne un 368 en V400, ou j'attendais un 19 (car le premier 11 est sur la ligne 19)
mais tu as demandé la dernière ligne où le chiffre est apparu !!!
mais tu as demandé la dernière ligne où le chiffre est apparu !!!
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
14 févr. 2011 à 21:24
14 févr. 2011 à 21:24
Et merde, je me suis mal exprimé... j'ai pas précisé que je remplie les chiffres par le haut ici.
Du coup je fait comment?
Du coup je fait comment?
ccm81
Messages postés
10560
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
25 mars 2023
2 337
Modifié par ccm81 le 14/02/2011 à 20:58
Modifié par ccm81 le 14/02/2011 à 20:58
re
désolé, je m'en doutais un peu
donc
Alt F11 pour acceder a l'editeur de macro (tu supprimes tout)
1.tu copies le code suivant (le nom de la procedure a changé)
2. Outils/Macros/
tu choisis derligne
Options
touche de raccourci ctrl+s (par exemple)
3. pour executer
Outils/macros/derligne/executer
ou
ctrl+s
si tu veux savoir comment on met un bouton et lui attacher un code, tu dis
bonne suite
désolé, je m'en doutais un peu
donc
Alt F11 pour acceder a l'editeur de macro (tu supprimes tout)
1.tu copies le code suivant (le nom de la procedure a changé)
Sub derligne()
Dim li As Long, derli As Long, ch As Long, co As Long, lich As Long
derli = Range("A65536").End(xlUp).Row
lich = 0
ch = 11
For li = 1 To derli
For co = 1 To 8
If Cells(li, co) = ch Then
lich = li
End If
Next co
Next li
Range("V400").Value = lich
End Sub
2. Outils/Macros/
tu choisis derligne
Options
touche de raccourci ctrl+s (par exemple)
3. pour executer
Outils/macros/derligne/executer
ou
ctrl+s
si tu veux savoir comment on met un bouton et lui attacher un code, tu dis
bonne suite
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
14 févr. 2011 à 21:09
14 févr. 2011 à 21:09
My bad, je viens de voir ton commentaire.
Je remplis les lignes par le haut dans ce fichier...la dernièer occurence sera donc en partant du haut. Vraiment désolé de t'avoir fait perdre du temps avec ça.
Je remplis les lignes par le haut dans ce fichier...la dernièer occurence sera donc en partant du haut. Vraiment désolé de t'avoir fait perdre du temps avec ça.
eriiic
Messages postés
24513
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 mars 2023
7 168
Modifié par eriiic le 14/02/2011 à 21:25
Modifié par eriiic le 14/02/2011 à 21:25
Bonsoir tout le monde,
Sinon c'est faisable par formule.
Avec le nombre recherché (11) en C1 :
ligne 1ère occurence :
=MIN(SI(($A$2:$A$400)=C1;LIGNE($A$2:$A$400);9^9))
ligne dernière occurence :
=MAX((($A$2:$A$400)=C1)*LIGNE($A$2:$A$400))
Les 2 formules sont matricielles et doivent être validées par shift+ctrl+entrée.
(elles s'entourent ensuite de { } )
eric
Sinon c'est faisable par formule.
Avec le nombre recherché (11) en C1 :
ligne 1ère occurence :
=MIN(SI(($A$2:$A$400)=C1;LIGNE($A$2:$A$400);9^9))
ligne dernière occurence :
=MAX((($A$2:$A$400)=C1)*LIGNE($A$2:$A$400))
Les 2 formules sont matricielles et doivent être validées par shift+ctrl+entrée.
(elles s'entourent ensuite de { } )
eric
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
14 févr. 2011 à 21:32
14 févr. 2011 à 21:32
@Eric,
Si je comprend bien, si je veux la première occurence du chiffre la première formule suffit?
Sinon j'ai l'impression que ça ne prend en compte que la première colonne.
Aussi quand je fait shift+ctrl+entrée après avoir collée la formule rien ne se passe ( pas de {} ) et j'ai une erreur.
Si je comprend bien, si je veux la première occurence du chiffre la première formule suffit?
Sinon j'ai l'impression que ça ne prend en compte que la première colonne.
Aussi quand je fait shift+ctrl+entrée après avoir collée la formule rien ne se passe ( pas de {} ) et j'ai une erreur.
eriiic
Messages postés
24513
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 mars 2023
7 168
14 févr. 2011 à 22:00
14 févr. 2011 à 22:00
Re,
j'ai l'impression que ça ne prend en compte que la première colonne.
oui, faite sur A2:A400
quand je fait shift+ctrl+entrée après avoir collée la formule rien ne se passe ( pas de {} ) et j'ai une erreur.
C'est que tu le fais mal... Il faut que le curseur soit dans la zone d'édition des formules en haut.
ex: Classeur1.xls
eric
j'ai l'impression que ça ne prend en compte que la première colonne.
oui, faite sur A2:A400
quand je fait shift+ctrl+entrée après avoir collée la formule rien ne se passe ( pas de {} ) et j'ai une erreur.
C'est que tu le fais mal... Il faut que le curseur soit dans la zone d'édition des formules en haut.
ex: Classeur1.xls
eric
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
14 févr. 2011 à 22:09
14 févr. 2011 à 22:09
"j'ai l'impression que ça ne prend en compte que la première colonne.
oui, faite sur A2:A400 "
Et c'est possible de le fraire sur 5 colonnes en même temps?
oui, faite sur A2:A400 "
Et c'est possible de le fraire sur 5 colonnes en même temps?
eriiic
Messages postés
24513
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 mars 2023
7 168
Modifié par eriiic le 14/02/2011 à 23:33
Modifié par eriiic le 14/02/2011 à 23:33
Re,
avec la valeur recherchée en G1 :
=MIN(SI(($A$2:$E$400)=G1;LIGNE($A$2:$E$400);9^9))
formule matricielle à valider par shift+ctrl+entrée
avec la valeur recherchée en G1 :
=MIN(SI(($A$2:$E$400)=G1;LIGNE($A$2:$E$400);9^9))
formule matricielle à valider par shift+ctrl+entrée
ccm81
Messages postés
10560
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
25 mars 2023
2 337
15 févr. 2011 à 09:09
15 févr. 2011 à 09:09
re
@ eriiic
jolie formule comme d'habitude et une question, dans mon code y a t'il moyen de quitter les deux for en même temps?
@antokomba
pour ne pas rester sur une impression d'inachevé et si tu veux eviter une formule matricielle
bonne suite
@ eriiic
jolie formule comme d'habitude et une question, dans mon code y a t'il moyen de quitter les deux for en même temps?
@antokomba
pour ne pas rester sur une impression d'inachevé et si tu veux eviter une formule matricielle
<code>Sub Premli()
Dim li As Long, derli As Long, ch As Long, co As Long, lich As Long
Dim trouve As Boolean
derli = Range("A65536").End(xlUp).Row
lich = 0
ch = 11
trouve = False
For li = 1 To derli
For co = 1 To 8
If Cells(li, co) = ch Then
lich = li
trouve = True
Exit For
End If
Next co
If trouve Then
Exit For
End If
Next li
Range("V400").Value = lich
End Sub</code>
bonne suite
eriiic
Messages postés
24513
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 mars 2023
7 168
15 févr. 2011 à 10:15
15 févr. 2011 à 10:15
Salut ccm81,
y a t'il moyen de quitter les deux for en même temps?
La possibilité que tu as utilisée (tester un flag) est correcte, je procède presque tout le temps ainsi.
Tu pourrais aussi forcer 'li' à sa valeur max (et tant qu'à faire 'co' aussi, et 'trouve' devient inutile). Au next li tu quitteras la boucle. C'est plus court mais peut-être moins lisible.
eric
y a t'il moyen de quitter les deux for en même temps?
La possibilité que tu as utilisée (tester un flag) est correcte, je procède presque tout le temps ainsi.
Tu pourrais aussi forcer 'li' à sa valeur max (et tant qu'à faire 'co' aussi, et 'trouve' devient inutile). Au next li tu quitteras la boucle. C'est plus court mais peut-être moins lisible.
eric
ccm81
Messages postés
10560
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
25 mars 2023
2 337
15 févr. 2011 à 11:23
15 févr. 2011 à 11:23
@ eriiic
merci, ça me rassure ...
en y reflechissant il y avait encore d'autres ruses plus ou moins propres, comme un goto (là on touche les bas fonds) , un traitement au coeur de la boucle suivi d'un exit sub, mais si je comprends bien, rien du genre exit for-for
cordialement
merci, ça me rassure ...
en y reflechissant il y avait encore d'autres ruses plus ou moins propres, comme un goto (là on touche les bas fonds) , un traitement au coeur de la boucle suivi d'un exit sub, mais si je comprends bien, rien du genre exit for-for
cordialement
antokomba
Messages postés
16
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
11 avril 2011
15 févr. 2011 à 20:18
15 févr. 2011 à 20:18
Ca marche, merci beaucoup à tous les deux!