Supprimer des lignes vides MAIS...
Résolu/Fermé
Pytou314
Messages postés
3
Date d'inscription
mardi 10 décembre 2013
Statut
Membre
Dernière intervention
12 décembre 2013
-
10 déc. 2013 à 18:45
Pytou314 - 13 déc. 2013 à 14:22
Pytou314 - 13 déc. 2013 à 14:22
A voir également:
- Supprimer des lignes vides MAIS...
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Impossible de supprimer un fichier - Guide
- Supprimer edge - Guide
- Supprimer pub youtube - Accueil - Streaming
5 réponses
Kusco
Messages postés
466
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
15 décembre 2014
336
11 déc. 2013 à 17:31
11 déc. 2013 à 17:31
C'est possible, par exemple tu peux faire ça comme ceci :
Dès qu'il trouve deux lignes vides alors une MsgBox s'ouvre et te dit de qu'elle ligne il s'agit. Ensuite la macro s'arrête.
Est ce que tu aimerais qu'elle fasse quelque chose d'autre de spécifique ?
Sub test_clic()
aa = Range("A" & Rows.Count).End(xlUp).Row
u = 0
For i = 1 To aa
If Range("A" & i) = "" Then
u = u + 1
Else
u = 0
End If
If u > 1 Then
MsgBox i
Exit For
Else
End If
Next i
End Sub
Dès qu'il trouve deux lignes vides alors une MsgBox s'ouvre et te dit de qu'elle ligne il s'agit. Ensuite la macro s'arrête.
Est ce que tu aimerais qu'elle fasse quelque chose d'autre de spécifique ?
Pytou314
Messages postés
3
Date d'inscription
mardi 10 décembre 2013
Statut
Membre
Dernière intervention
12 décembre 2013
11 déc. 2013 à 18:17
11 déc. 2013 à 18:17
Merci Kusco de ta réponse. C'est génial.
Avec seulement cette ligne, tu réponds à ma question:
"aa = Range("A" & Rows.Count).End(xlUp).Row"
Tu peux me la décrire stp par contre.
J'aurais plein de questions car j'essaye de faire des macros depuis qq temps mais je m'attaque toujours à de trés gros codes et je ne les finis pas. Mais voilà, petit à petit, j'avance. et celle-là, j'y tiens.
Merci encore pour tout. Et surement à bientôt sur le forum.
Avec seulement cette ligne, tu réponds à ma question:
"aa = Range("A" & Rows.Count).End(xlUp).Row"
Tu peux me la décrire stp par contre.
J'aurais plein de questions car j'essaye de faire des macros depuis qq temps mais je m'attaque toujours à de trés gros codes et je ne les finis pas. Mais voilà, petit à petit, j'avance. et celle-là, j'y tiens.
Merci encore pour tout. Et surement à bientôt sur le forum.
Kusco
Messages postés
466
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
15 décembre 2014
336
12 déc. 2013 à 09:32
12 déc. 2013 à 09:32
aa = Range("A" & Rows.Count).End(xlUp).Row
'aa est une variable quelquonque. On l'utilise souvent pour des tableaux j'aurais plutôt du l'appeler o, u, y ou quelque chose comme ça, le nom importe peu mais ce sont les "moeurs"
'Range donc pour sélectionner une cellule sous le format "A1"
' "A" correspond à la colonne A
' & permet de coller deux éléments ensemble notamment des variables.
' Rows.Count Rows comme lignes et Count comme compter. Donc ça compte le nombre de ligne de ta colonne.
' .End(xlUp).Row est une fonction qui permet en commençant par la fin, de remonter les lignes jusqu'à la dernière. En gros de trouver la dernière ligne utilisée.
Tu peux utiliser aa = Range("A" & Rows.Count).End(xlUp).Row + 1 pour avoir la dernière ligne vide.
N'hésites pas à me demander d'autres questions, je n'ai pas la science infuse mais je t'aiderais au maximum dans la mesure du possible.
Et rappelle toi, aucune question n'est bête, le seul truc bête c'est de ne pas poser cette question ! ;)
'aa est une variable quelquonque. On l'utilise souvent pour des tableaux j'aurais plutôt du l'appeler o, u, y ou quelque chose comme ça, le nom importe peu mais ce sont les "moeurs"
'Range donc pour sélectionner une cellule sous le format "A1"
' "A" correspond à la colonne A
' & permet de coller deux éléments ensemble notamment des variables.
' Rows.Count Rows comme lignes et Count comme compter. Donc ça compte le nombre de ligne de ta colonne.
' .End(xlUp).Row est une fonction qui permet en commençant par la fin, de remonter les lignes jusqu'à la dernière. En gros de trouver la dernière ligne utilisée.
Tu peux utiliser aa = Range("A" & Rows.Count).End(xlUp).Row + 1 pour avoir la dernière ligne vide.
N'hésites pas à me demander d'autres questions, je n'ai pas la science infuse mais je t'aiderais au maximum dans la mesure du possible.
Et rappelle toi, aucune question n'est bête, le seul truc bête c'est de ne pas poser cette question ! ;)
Pytou314
Messages postés
3
Date d'inscription
mardi 10 décembre 2013
Statut
Membre
Dernière intervention
12 décembre 2013
Modifié par pijaku le 13/12/2013 à 10:04
Modifié par pijaku le 13/12/2013 à 10:04
Merci encore pour ton aide.
Mais j'avance mon programme doucement.
Voilà ce que j'ai fais. Tu verras surement des défauts.
J'ai qq notions de VBA.
PROGRAMME:
Le programme est loin d'être fini.
Par exemple: Dans la variable tableau, il y a aura des doublons, il faudra que je les supprime.
A+
Mais j'avance mon programme doucement.
Voilà ce que j'ai fais. Tu verras surement des défauts.
J'ai qq notions de VBA.
PROGRAMME:
Option Explicit Dim sReference As String Dim sNumeroAffaire As String Dim i As Integer Dim iDerniereLigne As Integer Dim sVTE() As String Sub Etude() sNumeroAffaire = Application.InputBox("Entrez le numéro d'affaire", "Demande de numéro d'affaire", "SY01683") iDerniereLigne = Range("A" & Rows.Count).End(xlUp).Row With ThisWorkbook.Sheets(1) For i = 1 To iDerniereLigne sReference = .Cells(i, 1).Value If Left(sReference, 7) = sNumeroAffaire Then ReDim Preserve sVTE(1 To 2, 1 To i) sVTE(1, i) = .Cells(i, 1).Value sVTE(2, i) = .Cells(i, 2).Value End If Next i MsgBox "c'est fini" End With End Sub
Le programme est loin d'être fini.
Par exemple: Dans la variable tableau, il y a aura des doublons, il faudra que je les supprime.
A+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
13 déc. 2013 à 10:12
13 déc. 2013 à 10:12
Bonjour,
Pourquoi déclarer toutes tes variables en tête de Module? Tu t'en sers dans plusieurs procédure?
Si c'est pas le cas :
Ensuite, pour éviter les doublons, tu peux demander le dictionnaire de Mr Boisgontier...
Pourquoi déclarer toutes tes variables en tête de Module? Tu t'en sers dans plusieurs procédure?
Si c'est pas le cas :
Option Explicit Sub Etude() Dim sReference As String Dim sNumeroAffaire As String Dim i As Integer Dim iDerniereLigne As Integer Dim sVTE() As String
Ensuite, pour éviter les doublons, tu peux demander le dictionnaire de Mr Boisgontier...
Kusco
Messages postés
466
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
15 décembre 2014
336
13 déc. 2013 à 13:00
13 déc. 2013 à 13:00
Et une petite astuce car pijaku est mille fois plus calé que moi, tu peux déclarer des variables en une fois :
Dim sReference, sNumeroAffaire, sVTE as String
Dim i, iDerniereLigne as Integer
Tu peux mettre utiliser un autre système :
Dim sReference$, sNumeroAffaire$, sVTE$, i&, iDerniereLigne&
Tu as tous les symboles dans ce tableau :
https://www.excel-pratique.com/fr/vba/variables.php
Dim sReference, sNumeroAffaire, sVTE as String
Dim i, iDerniereLigne as Integer
Tu peux mettre utiliser un autre système :
Dim sReference$, sNumeroAffaire$, sVTE$, i&, iDerniereLigne&
Tu as tous les symboles dans ce tableau :
https://www.excel-pratique.com/fr/vba/variables.php
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
13 déc. 2013 à 13:09
13 déc. 2013 à 13:09
Et une petite astuce car pijaku est mille fois plus calé que moi, tu peux déclarer des variables en une fois :
Et................................................................ non!
NON!!
NNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
pardon...
Cette déclaration :
équivaut à :
Il faut écrire systématiquement le type de chaque variable. Par défaut VBA attribue la valeur Variant...
Donc :
Ou encore, pour les "faignants" :
Et................................................................ non!
NON!!
NNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
pardon...
Cette déclaration :
Dim sReference, sNumeroAffaire, sVTE as String
équivaut à :
Dim sReference As Variant, sNumeroAffaire As Variant, sVTE as String
Il faut écrire systématiquement le type de chaque variable. Par défaut VBA attribue la valeur Variant...
Donc :
Dim sReference As String, sNumeroAffaire As String, sVTE As String
Ou encore, pour les "faignants" :
Dim sReference$, sNumeroAffaire$, sVTE$
Kusco
Messages postés
466
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
15 décembre 2014
336
13 déc. 2013 à 13:14
13 déc. 2013 à 13:14
Ahahahah :D
Autant pour moi pour les Variant, j'ai du mal comprendre à un moment. Je vais corriger de suite tous mes fichiers excel !
Autant pour moi pour les Variant, j'ai du mal comprendre à un moment. Je vais corriger de suite tous mes fichiers excel !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question