[VBA]Récupérer n° des lignes avec cellule vide
Résolu
Did
-
Did -
Did -
Bonjour,
Je dois réaliser un petit fichier Excel qui va reprendre les données d'un fichier CSV.
Pas de soucis de ce côté là, j'ai ce format là :
Les chiffres représentent les cycles, les valeurs réelles les mesures effectuées.
Le cycle 4 est présent "2x" puisqu'il y a une pause de X secondes réalisées dans mon cycle.
Je crée un graphique en nuage de points représentant ces mesures, sauf qu'actuellement, comme je reprends toutes ces mesures pour faire mon graphique, il y a "un trou" dans mon graph lorsque la case est vide.
Je ne souhaite pas supprimer, puisqu'il faut mettre en avant sur le graph lorsqu'il y a eu une pause dans mon contrôle.
La solution que je pensais adopter :
- Créer une deuxième série de données, avec uniquement les cases vides, et affecter la valeur minimale de mon contrôle à chacune.
- De ce fait, sur mon graphique, un point se trouve tout en bas de mon graph, à la hauteur de la pause, et on voit bien quand une pause est survenue.
-> Déjà, est-ce une bonne idée où y-a-t'il une meilleure solution ?
Sinon je continue, j'ai trouvé ceci afin de remplacer immédiatement les valeurs de mes cases vides :
Et cela remplace TOUTES les valeurs en un seul passage !
J'imaginais donc pouvoir récupérer grâce à cela les numéros de ligne où une cellule est vide.
C'est ok pour la première avec ceci :
Sauf qu'ensuite je suis bloqué, je ne sais pas comment récupérer les autres !
Je me suis dis qu'avec un ".Rows" cela me les donnerait toutes, mais non, ça ne fait rien (ma variable reste <vide>).
-> Comment réaliser cette opération ?
Merci d'avance de m'avoir lu et de prendre du temps pour moi =)
Je dois réaliser un petit fichier Excel qui va reprendre les données d'un fichier CSV.
Pas de soucis de ce côté là, j'ai ce format là :
1 0.00534 2 -0.00245 3 -0.00142 4 0.00459 4 (blank) 5 0.00359
Les chiffres représentent les cycles, les valeurs réelles les mesures effectuées.
Le cycle 4 est présent "2x" puisqu'il y a une pause de X secondes réalisées dans mon cycle.
Je crée un graphique en nuage de points représentant ces mesures, sauf qu'actuellement, comme je reprends toutes ces mesures pour faire mon graphique, il y a "un trou" dans mon graph lorsque la case est vide.
Je ne souhaite pas supprimer, puisqu'il faut mettre en avant sur le graph lorsqu'il y a eu une pause dans mon contrôle.
La solution que je pensais adopter :
- Créer une deuxième série de données, avec uniquement les cases vides, et affecter la valeur minimale de mon contrôle à chacune.
- De ce fait, sur mon graphique, un point se trouve tout en bas de mon graph, à la hauteur de la pause, et on voit bien quand une pause est survenue.
-> Déjà, est-ce une bonne idée où y-a-t'il une meilleure solution ?
Sinon je continue, j'ai trouvé ceci afin de remplacer immédiatement les valeurs de mes cases vides :
With Sheets("Donnees") With .Range("B1", DerniereCaseMesures).SpecialCells(xlCellTypeBlanks) .Value = "vide" End With End With
Et cela remplace TOUTES les valeurs en un seul passage !
J'imaginais donc pouvoir récupérer grâce à cela les numéros de ligne où une cellule est vide.
C'est ok pour la première avec ceci :
Sheets("Donnees").Range("B1", DerniereCaseMesures).SpecialCells(xlCellTypeBlanks).Row
Sauf qu'ensuite je suis bloqué, je ne sais pas comment récupérer les autres !
Je me suis dis qu'avec un ".Rows" cela me les donnerait toutes, mais non, ça ne fait rien (ma variable reste <vide>).
-> Comment réaliser cette opération ?
Merci d'avance de m'avoir lu et de prendre du temps pour moi =)
A voir également:
- [VBA]Récupérer n° des lignes avec cellule vide
- Recuperer message whatsapp supprimé - Guide
- Supprimer page word vide - Guide
- Excel compter cellule couleur sans vba - Guide
- Aller à la ligne dans une cellule excel - Guide
- Partager des photos en ligne - Guide
4 réponses
yop!
Voilà ce que je ferai:
Ou alors tu fait un rechercher/remplacer où tu cherche "" et tu remplace par zéro.
Voilà, c'est ce qui me vient à l'esprit.
Salut!
Voilà ce que je ferai:
Sub remplacer_vide_par_zero Dim a as integer a=1 do while a< 9999999 'ce 9999999 correspond au nombre de ligne de ta feuille if cells(a,2)="" then cells(a,2)=0 end if a=a+1 loop End sub
Ou alors tu fait un rechercher/remplacer où tu cherche "" et tu remplace par zéro.
Voilà, c'est ce qui me vient à l'esprit.
Salut!
Bonjour,
Merci pour les réponses !
J'aime bien ton petit graphique, c'est une bonne idée =)
J'ai avancé d'un pas sinon, j'ai trouvé "EntireRow", et dans l'exemple ils parlaient de "Address", j'ai donc essayé ceci :
Et je récupère donc un String contenant :
Il ne me reste donc "plus qu'à" virer ces B, découper les nombres grâce à la virgule, et enfin affecter ces valeurs à ma nouvelle courbe de graphique.
Une question arrive, hier soir j'ai essayé d'affecter tour à tour (boucle) une valeur à ma série 2 du graphique, en utilisant ".XValues", mais bien sûr, cela remplace les anciennes valeurs.
Y-a-t'il une possibilité d'ajouter une valeur en gardant les anciennes (genre .Add ou qqchose du genre) ??
Merci en tout cas ;)
Merci pour les réponses !
J'aime bien ton petit graphique, c'est une bonne idée =)
J'ai avancé d'un pas sinon, j'ai trouvé "EntireRow", et dans l'exemple ils parlaient de "Address", j'ai donc essayé ceci :
test2 = Selection.SpecialCells(xlCellTypeBlanks).Rows.Address(False, False)
Et je récupère donc un String contenant :
"B51,B102,B153,B204,B255,B306,B357,B408,B459"
Il ne me reste donc "plus qu'à" virer ces B, découper les nombres grâce à la virgule, et enfin affecter ces valeurs à ma nouvelle courbe de graphique.
Une question arrive, hier soir j'ai essayé d'affecter tour à tour (boucle) une valeur à ma série 2 du graphique, en utilisant ".XValues", mais bien sûr, cela remplace les anciennes valeurs.
Y-a-t'il une possibilité d'ajouter une valeur en gardant les anciennes (genre .Add ou qqchose du genre) ??
Merci en tout cas ;)
Voilà je suis arrivé à ce que je voulais =)
Et ensuite je convertis ce tableau de String en tableau d'entier, et enfin j'affecte à ma série 2 du graphique le tableau d'entier :
Parfait merci pour l'aide apportée et j'espère qu'avec cela j'aiderai quelqu'un également !
Résolu !
' Récupération des adresses de lignes vides adrLignVide = Selection.SpecialCells(xlCellTypeBlanks).Rows.Address(False, False) ' Suppression des lettres de colonnes adrLignVide = Replace(adrLignVide, "B", "") 'Extraire les données séparées par une virgule dans un tableau de chaine de caractères Tableau = Split(adrLignVide, ",")
Et ensuite je convertis ce tableau de String en tableau d'entier, et enfin j'affecte à ma série 2 du graphique le tableau d'entier :
For i = 0 To UBound(Tableau) ' Boucle de conversion en entier TableauEntier(i) = CInt(Tableau(i)) - (i + 1) Next i ActiveChart.SeriesCollection(2).XValues = TableauEntier()
Parfait merci pour l'aide apportée et j'espère qu'avec cela j'aiderai quelqu'un également !
Résolu !