Problème avec code pour trouvé le nombre d'occurrences
Résolu
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Problème avec code pour trouvé le nombre d'occurrences
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Ou se trouve le presse papier - Guide
2 réponses
Bonjour
détecter le nombre de colonne correspondant au texte "Sensor Reading" dans l'entête de mes colonnes situé en ligne 1, à partir de la colonne F jusqu'à la dernière colonne. de la feuille f
Cdlmnt
détecter le nombre de colonne correspondant au texte "Sensor Reading" dans l'entête de mes colonnes situé en ligne 1, à partir de la colonne F jusqu'à la dernière colonne. de la feuille f
cofin = f.Cells(1, Columns.Count).End(xlToLeft).Column
Set plage = f.Range(Cells(1, codeb), Cells(1, cofin))
nbgr = Application.WorksheetFunction.CountIf(plage, "Sensor Reading")
Cdlmnt
Bonjour le fil, bonjour le forum,
Tout à fait d'accord avec CCM81, c'est la bonne méthode !...
J'imagine que tu parles du code des lignes 104 à 110 (sur CCM). Ta méthode, plus extravagante, aurait pu fonctionner comme ça :
Mais tu avais trois erreurs :
- La méthode Find renvoie une variable de type Range ou une valeur numérique associée à .Row ou .Column à la fin. Sans lui associer une variable elle plante. Tu aurais dû écrire (ligne 106), comme tu l'as fait (ligne 89) Col = ...
- Ensuite,en imaginant que tu aies écrit Col = , si tu recherches dans la ligne entière et même si tu décales la cellule de départ, Col renverra toujours la colonne de la première occurrence trouvée.
- Pour finir, sans condition If... End If, ton compteur sera toujours incrémenté...
--
À plus,
ThauTheme
Tout à fait d'accord avec CCM81, c'est la bonne méthode !...
J'imagine que tu parles du code des lignes 104 à 110 (sur CCM). Ta méthode, plus extravagante, aurait pu fonctionner comme ça :
For i = 6 To DerCol Set R = Cells(1, i).Find("Sensor Reading", , xlValues, xlWhole) If Not R Is Nothing Then Compteur = Compteur + 1 Next i Nbrpiezo = Compteur
Mais tu avais trois erreurs :
- La méthode Find renvoie une variable de type Range ou une valeur numérique associée à .Row ou .Column à la fin. Sans lui associer une variable elle plante. Tu aurais dû écrire (ligne 106), comme tu l'as fait (ligne 89) Col = ...
- Ensuite,en imaginant que tu aies écrit Col = , si tu recherches dans la ligne entière et même si tu décales la cellule de départ, Col renverra toujours la colonne de la première occurrence trouvée.
- Pour finir, sans condition If... End If, ton compteur sera toujours incrémenté...
--
À plus,
ThauTheme
Merci pour la réponse ThauTheme!
J'ai essayé ton code , je n'ai pas de message d'erreur, mais mon compteur est toujours à 0 alors qu'il y a 6 colonne avec "Sensor Reading".
Est-ce que c'est parce que dans la cellule il n'y a pas seulement ces 2 mots? Dans ma cellule il est écrit "Sensor Reading(KPa) - 1528243 - 18m".
J'ai changer xlwhole pour xlpart, mais ça ne change rien!
Merci!
J'ai essayé ton code , je n'ai pas de message d'erreur, mais mon compteur est toujours à 0 alors qu'il y a 6 colonne avec "Sensor Reading".
Est-ce que c'est parce que dans la cellule il n'y a pas seulement ces 2 mots? Dans ma cellule il est écrit "Sensor Reading(KPa) - 1528243 - 18m".
J'ai changer xlwhole pour xlpart, mais ça ne change rien!
Merci!
Bonjour le fil, bonjour le forum,
Pourquoi t'acharner sur cette méthode qui n'est pas la meilleure. J'ai juste voulu te montrer pourquoi ça ne marchait pas... Utilise plutôt la méthode proposée par CCM.
Sinon, sans fichier pour tester, je ne peux pas t'expliquer pourquoi ça ne fonctionne pas même avec XlPart...
Pourquoi t'acharner sur cette méthode qui n'est pas la meilleure. J'ai juste voulu te montrer pourquoi ça ne marchait pas... Utilise plutôt la méthode proposée par CCM.
Sinon, sans fichier pour tester, je ne peux pas t'expliquer pourquoi ça ne fonctionne pas même avec XlPart...
Bonjour,
Ce que j'ai essayé la proposition de CCM81 et ça ne fonctionne pas non plus. Voici ce que j'ai fait:
Quand j'utilise le pas à pas avec un espion sur la valeur de Nbgr, elle est toujours égale à zéro. Est-ce que c'est parce que dans ma cellule les mots recherchés font partie d'une série de chiffre et de lettre?
Merci pour votre aide!
Ce que j'ai essayé la proposition de CCM81 et ça ne fonctionne pas non plus. Voici ce que j'ai fait:
.Range(Cells(1, 5), Cells(DerLig, 5)).Borders(xlEdgeRight).Weight = xlMedium .Range(Cells(1, 2), Cells(DerLig, 2)).Borders(xlEdgeLeft).Weight = xlMedium .Range(Cells(1, 10), Cells(DerLig, 10)).Borders(xlEdgeRight).Weight = xlMedium .Range(Cells(1, 8), Cells(DerLig, 8)).Borders(xlEdgeRight).Weight = xlMedium .Columns("F").ColumnWidth = 10 End With ColFin = Sheets(1).Cells(1, Columns.Count).End(xlToLeft).Column Set plage = Sheets(1).Range(Cells(1, 6), Cells(1, ColFin)) Nbgr = Application.WorksheetFunction.CountIf(plage, "Sensor Reading") Nbrpiezo = Nbgr MsgBox Nbrpiezo Sheets.Add.Move after:=Sheets(Sheets.Count) ActiveSheet.Name = "Graphique" Call zone_texte If Nbrpiezo <= 3 Then Call graphique Exit Sub End If Sheets.Add.Move after:=Sheets(Sheets.Count) ActiveSheet.Name = "Graphique2" Call zone_texte If Nbrpiezo <= 6 Then Call graphique Exit Sub End If Sheets.Add.Move after:=Sheets(Sheets.Count) ActiveSheet.Name = "Graphique3" Call zone_texte Call graphique Application.Visible = True With ActiveWorkbook Application.DisplayAlerts = False If MsgBox("Voulez-vous sauvegarder ce fichier en .xlsx?", vbOKCancel + vbQuestion, "SAUVEGARDE") = vbCancel Then Application.ThisWorkbook.Saved = True ActiveWorkbook.Close Exit Sub Else fichier = UserForm2.TextBox1 nom = fichier & "_" & Format(Date, "yyyy-mm-dd") & "_" & ".xls" .SaveAs ActiveWorkbook.Path & "\" & nom, FileFormat:=xlNormal, CreateBackup:=False rep = MsgBox("Votre fichier est sauvegardée sous le nom : " & nom, vbOKOnly + vbInformation, "Copie sauvegarde classeur") End If Application.DisplayAlerts = True End With Application.ThisWorkbook.Saved = True Application.ScreenUpdating = True End Sub
Quand j'utilise le pas à pas avec un espion sur la valeur de Nbgr, elle est toujours égale à zéro. Est-ce que c'est parce que dans ma cellule les mots recherchés font partie d'une série de chiffre et de lettre?
Merci pour votre aide!
Mais je ne comprend très bien ce que je doit faire. est-ce que je suprime toute la partie du code: et les remplace par les trois lignes proposées?
J'ai essayé ça mais ça ne fonctionne pas, le compteur est toujours à 0 à la fin.