Accedé a une feuille cacher via une macro VBA
Résolu/Fermé
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
-
23 nov. 2009 à 18:14
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 3 déc. 2009 à 21:20
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 3 déc. 2009 à 21:20
A voir également:
- Accedé a une feuille cacher via une macro VBA
- Comment supprimer une feuille sur word - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Cacher une conversation whatsapp - Guide
- Macro word - Guide
- Cacher une application android - Guide
19 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
23 nov. 2009 à 21:51
23 nov. 2009 à 21:51
bonjour
As-tu essayé d'afficher tes feuilles, faire ta requête puis cacher tes feuilles ?
Si tu inhibes la mise à jour écran, cela devrait être totalement transparent.
As-tu essayé d'afficher tes feuilles, faire ta requête puis cacher tes feuilles ?
Si tu inhibes la mise à jour écran, cela devrait être totalement transparent.
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
24 nov. 2009 à 10:07
24 nov. 2009 à 10:07
Quand j'affiche les feuilles mes requêtes fonctionnent , si je les cache après c'est bon mais le problèmes c'est que si l'on doit faire une requête d'ajout et devoi démasquer les feuilles a chaque fois alors autant ne pas faire de requête :).
Qu'entend tu pas inhibé les feuille ?
Qu'entend tu pas inhibé les feuille ?
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
24 nov. 2009 à 10:20
24 nov. 2009 à 10:20
bonjour
Qu'entend tu pas inhibé les feuille ?
Tu n'as pas bien lu : Si tu inhibes la mise à jour écran
devoi démasquer les feuilles a chaque fois alors autant ne pas faire de requête
C'est sûr que l'exécution d'une ligne de code avant et après que tu ne verras pas doit être très pénalisante.
Tu fais comme tu veux mais essaies de lire ce qui est écrit pour comprendre la totalité de la proposition.
Qu'entend tu pas inhibé les feuille ?
Tu n'as pas bien lu : Si tu inhibes la mise à jour écran
devoi démasquer les feuilles a chaque fois alors autant ne pas faire de requête
C'est sûr que l'exécution d'une ligne de code avant et après que tu ne verras pas doit être très pénalisante.
Tu fais comme tu veux mais essaies de lire ce qui est écrit pour comprendre la totalité de la proposition.
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
24 nov. 2009 à 11:35
24 nov. 2009 à 11:35
J'ai bien compris ce que tu voulais dire ( maintenant ) mais j'ai du mal m'expliquer ( enfin je pense ).
En fait sur une feuille "formulaire" j'ai une requete pour inserer les donnée dans la feuille "ordi" par exemple.
Si je cache la feuille "ordi" la requete d'insertion via la macro ne marche pas.
Donc pour que la requete fonctionne je dois laisser la feuille "ordi" afficher et je ne peux pas la masquer.
Maintenant je veux bien tester ta proposition mais je ne sais pas comment faire pour inhiber la mise a jour d'ecran peut etre est-ce Application.ScreenUpdating = False qui empeche de voir le changement de feuille lors de l'execution de la macro mais cela ne fonctionne pas ( ou alors je le met au mauvais endroit ou je dois en mettre beaucoup plus ).
Voiloo :)
En fait sur une feuille "formulaire" j'ai une requete pour inserer les donnée dans la feuille "ordi" par exemple.
Si je cache la feuille "ordi" la requete d'insertion via la macro ne marche pas.
Donc pour que la requete fonctionne je dois laisser la feuille "ordi" afficher et je ne peux pas la masquer.
Maintenant je veux bien tester ta proposition mais je ne sais pas comment faire pour inhiber la mise a jour d'ecran peut etre est-ce Application.ScreenUpdating = False qui empeche de voir le changement de feuille lors de l'execution de la macro mais cela ne fonctionne pas ( ou alors je le met au mauvais endroit ou je dois en mettre beaucoup plus ).
Voiloo :)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
24 nov. 2009 à 11:46
24 nov. 2009 à 11:46
Bonjour à vous,
Je viens de faire un petit test qui, à moins d'une incompréhension totale de votre question, devrait résoudre votre problème.
Voyons si j'ai bien compris.
Une feuille "formulaire" dite de saisie
Une feuille "ordi" masquée qui recueille les données saisies en "formulaire".
Essayez ceci :
Sub test()
With Sheets("ordi")
.Range("A65536").End(xlUp).Offset(1, 0) = Range("A1")
End With
End Sub
Si vous êtes placés sur la feuille "formulaire", ce test "envoie" dans la première cellule vide de la colonne A feuille "ordi" (masquée) la valeur de formulaire!A1;
C'est bien ce que vous souhaitiez?
Je viens de faire un petit test qui, à moins d'une incompréhension totale de votre question, devrait résoudre votre problème.
Voyons si j'ai bien compris.
Une feuille "formulaire" dite de saisie
Une feuille "ordi" masquée qui recueille les données saisies en "formulaire".
Essayez ceci :
Sub test()
With Sheets("ordi")
.Range("A65536").End(xlUp).Offset(1, 0) = Range("A1")
End With
End Sub
Si vous êtes placés sur la feuille "formulaire", ce test "envoie" dans la première cellule vide de la colonne A feuille "ordi" (masquée) la valeur de formulaire!A1;
C'est bien ce que vous souhaitiez?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
24 nov. 2009 à 14:49
24 nov. 2009 à 14:49
Effectivement cela donne ce que je souhaite. Mais la formulation ne m'arrange guere car avec mon code ( pres de 1000 lignes ) je ne peux pas mettre cette ligne, donc je vais devoir chercher a partir de votre solution la facon de l'adapté a mon code.
Si y'en a qui veulent m'aider je post le code (pas tout le code mais si une fonction ou deux est resolu alors je pourrais l'appliquer partout ailleurs :) ):
Sub Vue_Ordi()
Dim valeur
Dim comparaison As Byte
Dim tablo
Dim ligne As Byte, compteur_y As Byte, compteur_x As Byte
Dim a, b, c, d As Integer
Dim tableau()
ReDim tableau(6)
Sheets("ordi").Select
b = ActiveSheet.Range("A65356").End(xlUp).Row
For a = 1 To b
tableau(0) = Sheets("ordi").Range("A" & a).Value
tableau(1) = Sheets("ordi").Range("B" & a).Value
tableau(2) = Sheets("ordi").Range("C" & a).Value
tableau(3) = Sheets("ordi").Range("D" & a).Value
tableau(4) = Sheets("ordi").Range("E" & a).Value
tableau(5) = Sheets("ordi").Range("F" & a).Value
tableau(6) = Sheets("ordi").Range("G" & a).Value
Sheets("recherche").Select
d = ActiveSheet.Range("A65356").End(xlUp).Row + 1
For c = 0 To 6
ActiveSheet.Cells(d, (c + 1)) = tableau(c)
Next
Next
Application.ScreenUpdating = False
valeur = Range("case_user")
If IsEmpty(valeur) Then
MsgBox "Veuillez choisir le nom de la personne pour que la requête fonctionne", vbCritical
Exit Sub
End If
With Sheets("recherche")
comparaison = Application.CountIf(.Columns(1), valeur)
ReDim tablo(comparaison - 1, colonne_user - 1)
ligne = 1
For compteur_y = 0 To UBound(tablo)
ligne = .Columns(1).Find(valeur, .Cells(ligne, 1), xlValues).Row
For compteur_x = 0 To colonne_user - 1
tablo(compteur_y, compteur_x) = .Cells(ligne, compteur_x + 1)
Next
Next
End With
nettoyerVueOrdi
nettoyerSearch
Application.ScreenUpdating = False
Sheets("requete de vue").Activate
With Range("resultatuser").Resize(comparaison, colonne_user)
.Value = tablo
.Borders.Weight = xlThin
End With
Rows("20:24").Select
With Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Range("I3").Select
End Sub
deuxoeme fonction :
Sub formulaire_ordinateur()
Dim tableau()
Dim compteur, dlu As Integer
ReDim tableau(11)
Sheets("formulaire").Select
tableau(0) = Range("C4").Value
tableau(1) = Range("D4").Value
tableau(2) = Range("E4").Value
tableau(3) = Range("F4").Value
tableau(4) = Range("G4").Value
tableau(5) = Range("H4").Value
tableau(6) = Range("I4").Value
tableau(7) = Range("J4").Value
tableau(8) = Range("K4").Value
tableau(9) = Range("L4").Value
tableau(10) = Range("M4").Value
tableau(11) = Range("N4").Value
Sheets("ordi").Select
dlu = ActiveSheet.Range("A65356").End(xlUp).Row + 1
For compteur = 0 To 11
ActiveSheet.Cells(dlu, (compteur + 1)) = tableau(compteur)
Next compteur
Sheets("formulaire").Select
Range("C4:N4").ClearContents
End Sub
Voiloo :) en attendant merci de m'avoir deja aider pijaku.
Si y'en a qui veulent m'aider je post le code (pas tout le code mais si une fonction ou deux est resolu alors je pourrais l'appliquer partout ailleurs :) ):
Sub Vue_Ordi()
Dim valeur
Dim comparaison As Byte
Dim tablo
Dim ligne As Byte, compteur_y As Byte, compteur_x As Byte
Dim a, b, c, d As Integer
Dim tableau()
ReDim tableau(6)
Sheets("ordi").Select
b = ActiveSheet.Range("A65356").End(xlUp).Row
For a = 1 To b
tableau(0) = Sheets("ordi").Range("A" & a).Value
tableau(1) = Sheets("ordi").Range("B" & a).Value
tableau(2) = Sheets("ordi").Range("C" & a).Value
tableau(3) = Sheets("ordi").Range("D" & a).Value
tableau(4) = Sheets("ordi").Range("E" & a).Value
tableau(5) = Sheets("ordi").Range("F" & a).Value
tableau(6) = Sheets("ordi").Range("G" & a).Value
Sheets("recherche").Select
d = ActiveSheet.Range("A65356").End(xlUp).Row + 1
For c = 0 To 6
ActiveSheet.Cells(d, (c + 1)) = tableau(c)
Next
Next
Application.ScreenUpdating = False
valeur = Range("case_user")
If IsEmpty(valeur) Then
MsgBox "Veuillez choisir le nom de la personne pour que la requête fonctionne", vbCritical
Exit Sub
End If
With Sheets("recherche")
comparaison = Application.CountIf(.Columns(1), valeur)
ReDim tablo(comparaison - 1, colonne_user - 1)
ligne = 1
For compteur_y = 0 To UBound(tablo)
ligne = .Columns(1).Find(valeur, .Cells(ligne, 1), xlValues).Row
For compteur_x = 0 To colonne_user - 1
tablo(compteur_y, compteur_x) = .Cells(ligne, compteur_x + 1)
Next
Next
End With
nettoyerVueOrdi
nettoyerSearch
Application.ScreenUpdating = False
Sheets("requete de vue").Activate
With Range("resultatuser").Resize(comparaison, colonne_user)
.Value = tablo
.Borders.Weight = xlThin
End With
Rows("20:24").Select
With Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Range("I3").Select
End Sub
deuxoeme fonction :
Sub formulaire_ordinateur()
Dim tableau()
Dim compteur, dlu As Integer
ReDim tableau(11)
Sheets("formulaire").Select
tableau(0) = Range("C4").Value
tableau(1) = Range("D4").Value
tableau(2) = Range("E4").Value
tableau(3) = Range("F4").Value
tableau(4) = Range("G4").Value
tableau(5) = Range("H4").Value
tableau(6) = Range("I4").Value
tableau(7) = Range("J4").Value
tableau(8) = Range("K4").Value
tableau(9) = Range("L4").Value
tableau(10) = Range("M4").Value
tableau(11) = Range("N4").Value
Sheets("ordi").Select
dlu = ActiveSheet.Range("A65356").End(xlUp).Row + 1
For compteur = 0 To 11
ActiveSheet.Cells(dlu, (compteur + 1)) = tableau(compteur)
Next compteur
Sheets("formulaire").Select
Range("C4:N4").ClearContents
End Sub
Voiloo :) en attendant merci de m'avoir deja aider pijaku.
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
25 nov. 2009 à 16:32
25 nov. 2009 à 16:32
Personne n'a d'idée pour faire en sorte que la fonction :
Sub formulaire_ordinateur()
Dim tableau()
Dim compteur, dlu As Integer
ReDim tableau(11)
Sheets("formulaire").Select
tableau(0) = Range("C4").Value
tableau(1) = Range("D4").Value
tableau(2) = Range("E4").Value
tableau(3) = Range("F4").Value
tableau(4) = Range("G4").Value
tableau(5) = Range("H4").Value
tableau(6) = Range("I4").Value
tableau(7) = Range("J4").Value
tableau(8) = Range("K4").Value
tableau(9) = Range("L4").Value
tableau(10) = Range("M4").Value
tableau(11) = Range("N4").Value
Sheets("ordi").Select
dlu = ActiveSheet.Range("A65356").End(xlUp).Row + 1
For compteur = 0 To 11
ActiveSheet.Cells(dlu, (compteur + 1)) = tableau(compteur)
Next compteur
Sheets("formulaire").Select
Range("C4:N4").ClearContents
End Sub
Puisse fonctionner sans avoir besoin que la feuille ordi soit ouverte ( en d'autre terme faire en sorte qu'elle soit masquée et que cela fonctionne ) ?
A+
Sub formulaire_ordinateur()
Dim tableau()
Dim compteur, dlu As Integer
ReDim tableau(11)
Sheets("formulaire").Select
tableau(0) = Range("C4").Value
tableau(1) = Range("D4").Value
tableau(2) = Range("E4").Value
tableau(3) = Range("F4").Value
tableau(4) = Range("G4").Value
tableau(5) = Range("H4").Value
tableau(6) = Range("I4").Value
tableau(7) = Range("J4").Value
tableau(8) = Range("K4").Value
tableau(9) = Range("L4").Value
tableau(10) = Range("M4").Value
tableau(11) = Range("N4").Value
Sheets("ordi").Select
dlu = ActiveSheet.Range("A65356").End(xlUp).Row + 1
For compteur = 0 To 11
ActiveSheet.Cells(dlu, (compteur + 1)) = tableau(compteur)
Next compteur
Sheets("formulaire").Select
Range("C4:N4").ClearContents
End Sub
Puisse fonctionner sans avoir besoin que la feuille ordi soit ouverte ( en d'autre terme faire en sorte qu'elle soit masquée et que cela fonctionne ) ?
A+
pou pouille
Messages postés
207
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
20 juillet 2012
31
25 nov. 2009 à 16:53
25 nov. 2009 à 16:53
bonjour,
normalement le
normalement le
application.screenupdating=Falsedevrai fonctionner (en le placant après le sub ca devrai etre bon)
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
25 nov. 2009 à 17:13
25 nov. 2009 à 17:13
Tout juste apres la declaration de la fonction ? ouki je vais essayer.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
25 nov. 2009 à 18:29
25 nov. 2009 à 18:29
bonjour
Pour que ta macro fonctionne avec la feuille masquée, tu peux la simplifier ainsi :
La feuille "ordi" n'est pas affichée et même masquée et cela ne l'empêche aucunement de récupérer le Range("C4:N4") de ta feuille "formulaire".
Le "." initial des instructions est qualifié par With Sheets("ordi")
Pour que ta macro fonctionne avec la feuille masquée, tu peux la simplifier ainsi :
Sub formulaire_ordinateur() Dim compteur, dlu As Integer Sheets("formulaire").Select With Sheets("ordi") dlu = .Range("A65356").End(xlUp).Row + 1 For compteur = 0 To 11 .Cells(dlu, (compteur + 1)) = Cells(4, compteur + 3).Value Next compteur End With Range("C4:N4").ClearContents End Sub
La feuille "ordi" n'est pas affichée et même masquée et cela ne l'empêche aucunement de récupérer le Range("C4:N4") de ta feuille "formulaire".
Le "." initial des instructions est qualifié par With Sheets("ordi")
pou pouille
Messages postés
207
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
20 juillet 2012
31
25 nov. 2009 à 22:38
25 nov. 2009 à 22:38
joli épuration ^^
c'est bien plus lisible
c'est bien plus lisible
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
26 nov. 2009 à 13:02
26 nov. 2009 à 13:02
J'ai compris le fait que de faire ActiveSheet.blabla et sheets("test").select ne pouvait pas être compatible avec le fait de masquer une feuille tout en y insérant des données et cela grâce a ton code. Merci beaucoup. J'ai plus qu'à modifier ... toutes mes lignes de codes pour faire en sorte que cela marche partout :). Encore merci. A+
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
26 nov. 2009 à 18:43
26 nov. 2009 à 18:43
bonjour
Merci de ton message et dans la simplification, je n'avais pas été tout à fait au bout pour ne pas trop te perturber mais tu peux encore simplifier ainsi maintenant que tu as compris le précédent :
ou bien même ceci qui fonctionne sans aucun positionnement
Merci de ton message et dans la simplification, je n'avais pas été tout à fait au bout pour ne pas trop te perturber mais tu peux encore simplifier ainsi maintenant que tu as compris le précédent :
Sub formulaire_ordinateur() Dim dlu As Integer Sheets("formulaire").Select With Sheets("ordi") dlu = .Range("A65356").End(xlUp).Row + 1 .Cells(dlu, 1).Resize(1, 12).Value = Range("C4:N4").Value End With Range("C4:N4").ClearContents End Sub
ou bien même ceci qui fonctionne sans aucun positionnement
Sub formulaire_ordinateur() With Sheets("ordi") .Cells(.Range("A65356").End(xlUp).Row + 1, 1).Resize(1, 12).Value _ = Sheets("formulaire").Range("C4:N4").Value End With Sheets("formulaire").Range("C4:N4").ClearContents End Sub
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
1 déc. 2009 à 18:23
1 déc. 2009 à 18:23
C'est exactement ce que j'ai fait quand j'ai compris ton message d'avant :)
Encore merci seulement j'ai un petit souci en fait la pour convertir mon ancienne macro sans masquer à une macro qui fonctionne en pouvant masquer la feuille. Apparament il n'aime pas trop :
code 1 : masquant la feuille ordi
With Sheets("ordi")
i = 1
For i = 1 To 2000
If Range("A" & i) = valeur Then
If Range("B" & i) = valeur2 Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
End If
End If
Next
End With
(On se situe dans la feuille "effacer"). Avec la feuille ordi , je met un compteur i de 1 a 2000 pour lire mon fichier, si la valeur Ai = à valeur alors je rentre dans le si qui regarde si Bi = valeur2 et si c'ets le cas il efface la ligne i dans la feuille Ordi.
alors que bizaremment pour la même chose sans essayer de cacher la feuille ordi cela fonctionne avec :
code 2 : sans masquer feuille ordi
Sheets("ordi").select
i = 1
For i = 1 To 2000
If Range("A" & i) = valeur Then
If Range("B" & i) = valeur2 Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
End If
End If
Next
Le problème c'est qu'il exécute le code1 tranquillement sans erreur mais n'efface pas la ligne voulu ...
J'ai essayé une vingtaine de codage différent sans résultat ou bien catastrophique.
Peux tu m'aider s'il te plait ? La je coince, il ne doit pas apprécier les IF combiné avec cette méthode car tout le reste de mon code fonctionne.
A+ et merci d'avance.
Encore merci seulement j'ai un petit souci en fait la pour convertir mon ancienne macro sans masquer à une macro qui fonctionne en pouvant masquer la feuille. Apparament il n'aime pas trop :
code 1 : masquant la feuille ordi
With Sheets("ordi")
i = 1
For i = 1 To 2000
If Range("A" & i) = valeur Then
If Range("B" & i) = valeur2 Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
End If
End If
Next
End With
(On se situe dans la feuille "effacer"). Avec la feuille ordi , je met un compteur i de 1 a 2000 pour lire mon fichier, si la valeur Ai = à valeur alors je rentre dans le si qui regarde si Bi = valeur2 et si c'ets le cas il efface la ligne i dans la feuille Ordi.
alors que bizaremment pour la même chose sans essayer de cacher la feuille ordi cela fonctionne avec :
code 2 : sans masquer feuille ordi
Sheets("ordi").select
i = 1
For i = 1 To 2000
If Range("A" & i) = valeur Then
If Range("B" & i) = valeur2 Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
End If
End If
Next
Le problème c'est qu'il exécute le code1 tranquillement sans erreur mais n'efface pas la ligne voulu ...
J'ai essayé une vingtaine de codage différent sans résultat ou bien catastrophique.
Peux tu m'aider s'il te plait ? La je coince, il ne doit pas apprécier les IF combiné avec cette méthode car tout le reste de mon code fonctionne.
A+ et merci d'avance.
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
2 déc. 2009 à 10:14
2 déc. 2009 à 10:14
Salut,
Message d'erreur sur le code que tu me donnes :
propriete ou methode non gerer par l'objet au niveau de la ligne ' .Rows(i & ":" & i).Delete Shift:=xlUp '
si je met un .rows cela ne fonctionne pas ... et si j'essaie de faire .clearcontents a la fin d'un .range en remplacant la ligne cela ne fonctionne pas non plus. SI j'arrivais a faire clear contents je peux ensuite faire en sorte d'effacer les lignes vides mais la ... je n'arrive a rien :'(
L'espoir fait vivre alors je vais quand même continuer a chercher :).
Message d'erreur sur le code que tu me donnes :
propriete ou methode non gerer par l'objet au niveau de la ligne ' .Rows(i & ":" & i).Delete Shift:=xlUp '
si je met un .rows cela ne fonctionne pas ... et si j'essaie de faire .clearcontents a la fin d'un .range en remplacant la ligne cela ne fonctionne pas non plus. SI j'arrivais a faire clear contents je peux ensuite faire en sorte d'effacer les lignes vides mais la ... je n'arrive a rien :'(
L'espoir fait vivre alors je vais quand même continuer a chercher :).
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
2 déc. 2009 à 13:32
2 déc. 2009 à 13:32
RE salut,
Voila j'ai trouver la solution ... un peu tordu comme truc j'en était venu a faire toute une manip en commencant part supprimer le contenu puis la ligne avec plusieurs boucle , et une variable ne plus mais finalement pas besoin j'ai trouver le truc :).
Je le post pour ceux qui en aurait besoin :
With Sheets("ordi")
For i = 2000 To 1 Step -1
If .Range("A" & i) = valeur Then
If .Range("B" & i) = valeur2 Then
With Sheets("ordi")
.Rows(i & ":" & i).Delete shift:=xlUp
End With
End If
End If
Next i
End With
et merci encore d'avoir passer du temps a m'aider gbinforme.
A+
GooM
Voila j'ai trouver la solution ... un peu tordu comme truc j'en était venu a faire toute une manip en commencant part supprimer le contenu puis la ligne avec plusieurs boucle , et une variable ne plus mais finalement pas besoin j'ai trouver le truc :).
Je le post pour ceux qui en aurait besoin :
With Sheets("ordi")
For i = 2000 To 1 Step -1
If .Range("A" & i) = valeur Then
If .Range("B" & i) = valeur2 Then
With Sheets("ordi")
.Rows(i & ":" & i).Delete shift:=xlUp
End With
End If
End If
Next i
End With
et merci encore d'avoir passer du temps a m'aider gbinforme.
A+
GooM
pou pouille
Messages postés
207
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
20 juillet 2012
31
2 déc. 2009 à 14:56
2 déc. 2009 à 14:56
bonjour,
Heu , c'est pratiquement la meme chose que le post 15 de gbinforme... appart que tu rajoute un With alors qu'il est défini au début...
Heu , c'est pratiquement la meme chose que le post 15 de gbinforme... appart que tu rajoute un With alors qu'il est défini au début...
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
2 déc. 2009 à 22:25
2 déc. 2009 à 22:25
bonjour
Tu peux tout simplement mettre :
Tu n'as effectivement besoin que tu numéro de ligne et non d'une plage mais je n'avais pas vu ce surplus sur le moment et après j'ai dû partir et je n'ai pas pu corriger.
Tu peux tout simplement mettre :
.Rows(i).Delete Shift:=xlUp
Tu n'as effectivement besoin que tu numéro de ligne et non d'une plage mais je n'avais pas vu ce surplus sur le moment et après j'ai dû partir et je n'ai pas pu corriger.
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
3 déc. 2009 à 17:45
3 déc. 2009 à 17:45
Ouai je sais pou pouille mais ca marche comme ca et pas dans celui de gbinforme alors que veux tu que je te dise :)
c'est lourd et moche mais si ca marche ... :)
Ouai je sais je l'ai modifié par la suite, je simplifie le code en meme temps que je note les commentaires, et j'en etait pas encore la niveau commentaire ^^.
A pluche.
c'est lourd et moche mais si ca marche ... :)
Ouai je sais je l'ai modifié par la suite, je simplifie le code en meme temps que je note les commentaires, et j'en etait pas encore la niveau commentaire ^^.
A pluche.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
3 déc. 2009 à 21:20
3 déc. 2009 à 21:20
bonjour
ca marche comme ca et pas dans celui de gbinforme alors que veux tu que je te dise
Que veux-tu que l'on te dise en effet si tu est sûr de ton fait ?
Cependant la programmation obéie à quelques règles précises et ce que tu racontes est plus de l'ésotérisme que des notions de codage informatique : la double qualification ne peut en aucun cas améliorer un fonctionnement.
Quand tu écris aussi :
With Sheets("ordi")
i = 1
For i = 1 To 2000
If Range("A" & i) = valeur Then
If Range("B" & i) = valeur2 Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
Cela révèle que tu n'as pas compris le fonctionnement de With Sheets("ordi") puisque tu l'écris sans l'utiliser ensuite et tu prétends ensuite que "alors que bizaremment pour la même chose" cela fonctionne avec Sheets("ordi").select
Soyons sérieux avant d'écrire que le code agit bizarrement : il ne fait que ce qu'on lui dit de faire !
Lorsque cela ne fonctionne pas il faut d'abord vérifier ce qui est écrit avant d'implorer le hasard ou un bug VBA.
En employant le mot requête dans ta question, tu n'en maitrise pas non plus le sens et tu peux le vérifier ici
ca marche comme ca et pas dans celui de gbinforme alors que veux tu que je te dise
Que veux-tu que l'on te dise en effet si tu est sûr de ton fait ?
Cependant la programmation obéie à quelques règles précises et ce que tu racontes est plus de l'ésotérisme que des notions de codage informatique : la double qualification ne peut en aucun cas améliorer un fonctionnement.
Quand tu écris aussi :
With Sheets("ordi")
i = 1
For i = 1 To 2000
If Range("A" & i) = valeur Then
If Range("B" & i) = valeur2 Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
Cela révèle que tu n'as pas compris le fonctionnement de With Sheets("ordi") puisque tu l'écris sans l'utiliser ensuite et tu prétends ensuite que "alors que bizaremment pour la même chose" cela fonctionne avec Sheets("ordi").select
Soyons sérieux avant d'écrire que le code agit bizarrement : il ne fait que ce qu'on lui dit de faire !
Lorsque cela ne fonctionne pas il faut d'abord vérifier ce qui est écrit avant d'implorer le hasard ou un bug VBA.
En employant le mot requête dans ta question, tu n'en maitrise pas non plus le sens et tu peux le vérifier ici
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
1 déc. 2009 à 19:19
1 déc. 2009 à 19:19
bonjour
Comme ceci cela devrait fonctionner :
- il ne faut pas utiliser les "select" car tu es alors obligé d'avoir la feuille affichée.
- il est préférable de supprimer en partant du bas sinon tes index sont perturbés par les suppressions.
- pour que "with" fonctionne il faut que les positionnements commencent par "." sinon tu restes sur la feuille active.
Comme ceci cela devrait fonctionner :
- il ne faut pas utiliser les "select" car tu es alors obligé d'avoir la feuille affichée.
- il est préférable de supprimer en partant du bas sinon tes index sont perturbés par les suppressions.
- pour que "with" fonctionne il faut que les positionnements commencent par "." sinon tu restes sur la feuille active.
With Sheets("ordi") For i = 2000 To 1 Step -1 If .Range("A" & i) = valeur Then If .Range("B" & i) = valeur2 Then .Rows(i & ":" & i).Delete Shift:=xlUp End If End If Next i End With