Accedé a une feuille cacher via une macro VBA
Résolu
goomis95
Messages postés
39
Date d'inscription
Statut
Membre
Dernière intervention
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Et désolé pour l'orthographe dans le titre sinon cela ne rentrait pas entièrement :)
Voila en fait sous excel j'ai des requêtes d'insertion, de modification, de suppression et de vue. ( en langage base de données : insert, select, update, delete ).
Seulement mon problèmes c'est que si je cache les feuilles de "tables" servant de BDD je ne peux pas insérer de données ni les modifier elles sont donc obligés d'être "disponibles" donc non cachés et accessible sans avoir recours à mes requêtes. Cela facilite les choses me direz vous, mais est-il possible de rendre ces feuilles de "tables" cachés tout en rendant les requêtes exécutables ?
Je ne sais pas si j'ai été clair mais j'espère l'avoir été :). En espérant une réponse m'éclairant sur ma question.
A+
Et désolé pour l'orthographe dans le titre sinon cela ne rentrait pas entièrement :)
Voila en fait sous excel j'ai des requêtes d'insertion, de modification, de suppression et de vue. ( en langage base de données : insert, select, update, delete ).
Seulement mon problèmes c'est que si je cache les feuilles de "tables" servant de BDD je ne peux pas insérer de données ni les modifier elles sont donc obligés d'être "disponibles" donc non cachés et accessible sans avoir recours à mes requêtes. Cela facilite les choses me direz vous, mais est-il possible de rendre ces feuilles de "tables" cachés tout en rendant les requêtes exécutables ?
Je ne sais pas si j'ai été clair mais j'espère l'avoir été :). En espérant une réponse m'éclairant sur ma question.
A+
A voir également:
- Accedé a une feuille cacher via une macro VBA
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Cacher une conversation whatsapp - Guide
- Bruler une feuille de laurier - Guide
- Comment supprimer une feuille sur word - Guide
- Comment imprimer en a5 sur une feuille a4 - Guide
19 réponses
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.
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 ?
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.
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 :)
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
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.
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+
bonjour,
normalement le
normalement le
application.screenupdating=Falsedevrai fonctionner (en le placant après le sub ca devrai etre bon)
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")
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+
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
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.
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 :).
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
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.
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.
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
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